Код, установленный для запуска во время таймера, запускается периодически
У меня есть таймер обратного отсчета, который запускается, когда пользователь нажимает кнопку. По завершении таймера местоположение устройства отправляется на другое устройство, для которого пользователь вводит номер телефона. Вот мой код таймера:
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");
}
}
Я крайне озадачен тем, почему это происходит, я потратил часы на это и нанял пару фрилансеров, чтобы помочь, и ничто из того, что они сделали, не смогло решить проблему. Половина времени код будет работать нормально, и он будет отправлять новое местоположение устройства, и половину времени он будет отправлять местоположение, которое устройство вернуло ранее. Я перемещаю телефон, чтобы проверить новые места, и я запускаю это на трех разных телефонах, и это происходит на всех них с перерывами. Любые идеи очень приветствуются.