我有一个倒数计时器,当用户按下按钮时运行,在计时器结束时,设备的位置被发送到用户输入电话号码的另一台设备。这是我的计时器代码::
private void initTimer() {
if(timer==null)
{
long totalTime= (PersistData.getIntData(con, AppConstant.selectedMinute)*60*1000)+(PersistData.getIntData(con, AppConstant.selectedseconds)*1000);
timer=new CountDownTimer(totalTime, 1000) {
public void onTick(long millisUntilFinished) {
timerView.setText(getFormatterTimerText(millisUntilFinished));
if(millisUntilFinished<60*1000)
{
continueFlashAndAudio();
/*
refresh GPS Location again
*/
updateGPSLocation (millisUntilFinished);
}
}
public void onFinish() {
showFinishView();
}
};
}
}
当计时器运行时,它应该运行“updategpslocation”函数:
private void updateGPSLocation(long millisUntilFinished) {
Log.e("current time remaining", " time: "+millisUntilFinished/1000);
if(millisUntilFinished/1000==30)
{
Log.e("30 seconds remaining", "get locaiton");
getLocation();
}
if(millisUntilFinished/1000==10)
{
Log.e("10 seconds remaining", "get locaiton");
getLocation();
}
}
我遇到的问题是,大约有一半的时间,该位置不会更新,它会将先前获取的位置发送到另一部手机。
这是我获取位置的代码:
private void getLocation()
{
GPSTracker tracker=new GPSTracker(con);
if(tracker.canGetLocation())
{
Location lastLocation=tracker.getLocation();
PersistObject.apply(con,AppConstant.LOCATION,lastLocation);
Log.e("Location is refreshed", "5 seconds remaining");
}
}
我对为什么会发生这种情况感到非常困惑,我花了几个小时来解决这个问题,并聘请了几个自由职业者来提供帮助,但他们所做的一切都无法解决这个问题。一半的时间代码可以正常工作,它会发送设备的新位置,一半的时间会发送设备之前返回的位置。我移动手机以测试新点,我在三部不同的手机上运行它,并且间歇性地发生在所有手机上。任何想法将不胜感激。