Как продолжить обновление texview на таймер обратного отсчета, работающий в фоновом режиме? - PullRequest
0 голосов
/ 13 марта 2020

У меня есть таймер обратного отсчета, который я изменил, чтобы подсчитать. Таймер продолжит работать в то же время, пока выдает процентное содержание для просмотра текста (ТВП). Ниже приведен код.

   timer = new CountUpTimer(date3) {
        public void onTick(int secondt) {
            simpleDateFormat = new SimpleDateFormat ("HH:mm:ss");
            tv_timer.setText(simpleDateFormat.format (secondt));
            t1 = date3 - date;
            percentage = Math.round (secondt/t1 *100);
            tvp.setText ( percentage+"%" );

        }
    };timer.start();

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

  getActivity ().runOnUiThread(new Runnable() {
        @Override
        public void run() {
            tvp.setText ( percentage + "%" );
        }
    });

ниже приведен мой код обслуживания таймера

@Nullable
@Override
public IBinder onBind(Intent intent) {
    return null;
}

@Override
public void onCreate() {

    super.onCreate();

    mpref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    mEditor = mpref.edit();

    mTimer.scheduleAtFixedRate(new TimeDisplayTimerTask(), 5, NOTIFY_INTERVAL);
    intent = new Intent(str_receiver);


}

class TimeDisplayTimerTask extends TimerTask {

    @Override
    public void run() {
        mHandler.post( () -> {
            timerprogressupdate ();
        } );
    }

}

public String timerprogressupdate() {

    fn_update ( IFTimer.secondt );
    fn_updatep ( IFTimer.percentage );

    return timerprogressupdate();
}


@Override
public void onDestroy() {
    super.onDestroy();
    Log.e("Service finish","Finish");


}

private void fn_update(long str_time){

    intent.putExtra("time",str_time);
    sendBroadcast(intent);
}

}

широковещательный приемник

private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String strDate = intent.getStringExtra("time");

    }
};

Мне нужно обновить и запустить просмотр текста в процентах после того, как я нажму кнопку "Назад". У кого-нибудь есть решение по этому поводу? Буду признателен, если кто-нибудь сможет мне помочь.

...