Код, установленный для запуска во время таймера, запускается периодически - PullRequest
0 голосов
/ 11 декабря 2018

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

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


    }
}

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

...