package com.jqmobile.core.android.time.impl; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.TimerTask; import android.content.Context; import android.util.Log; import com.jqmobile.core.android.time.IGetTime; class GetTime implements IGetTime { /** * @param args */ public GetTime(Context context) { // TODO Auto-generated constructor stub f = new Function(context); t1 = new Timer1(f); t30 = new Timer30(f); } private Function f; private Timer1 t1; private Timer30 t30; private final List<TimerTask> list = new ArrayList<TimerTask>(); public void addListner(TimerTask task) { list.add(task); } @Override public long getTime() throws Exception { int i = 0; long time; while (f.lockFalg) { if (3 == i++) throw new Exception("���糬ʱ���޷���ȡ����ʱ��"); Thread.sleep(1000); } try { f.lockFalg = true; if (f.getTime() == 0 || f.getLocalityTime() == 0) { time = f.syncTime(); } else { long timeDifference; timeDifference = new Date().getTime() - f.getLocalityTime(); if (timeDifference < 3600000 && timeDifference > -3600000) { time = timeDifference + f.getTime(); Log.d("debug", "�ñ���ʱ��"); } else { time = f.syncTime(); } } } catch (Exception e) { throw new Exception("���糬ʱ���޷���ȡ����ʱ��"); } finally { f.lockFalg = false; } return time; } }