Код, установленный для запуска во время таймера, запускается периодически

У меня есть таймер обратного отсчета, который запускается, когда пользователь нажимает кнопку. По завершении таймера местоположение устройства отправляется на другое устройство, для которого пользователь вводит номер телефона. Вот мой код таймера:

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");


    }
}

Я крайне озадачен тем, почему это происходит, я потратил часы на это и нанял пару фрилансеров, чтобы помочь, и ничто из того, что они сделали, не смогло решить проблему. Половина времени код будет работать нормально, и он будет отправлять новое местоположение устройства, и половину времени он будет отправлять местоположение, которое устройство вернуло ранее. Я перемещаю телефон, чтобы проверить новые места, и я запускаю это на трех разных телефонах, и это происходит на всех них с перерывами. Любые идеи очень приветствуются.

0 ответов

Другие вопросы по тегам