创建前台服务并使用countDown计时器。然后每1秒钟发送一次广播以更改ui。
如果您希望应用在Android 8及更高版本上在后台运行,则应发送带有服务的通知以向用户显示您的应用正在执行的任务。
@Override
public int onStartCommand(Intent intent,int flags,int startId) {
int milliseconds = 100* 1000;
new CountDownTimer(milliseconds,1000) {
@Override
public void onTick(long millisUntilFinished) {
Intent intent = new Intent("timer_tracking");
intent.putExtra("timer",millisUntilFinished);
LocalBroadcastManager.getInstance(getApplicationContext()).sendBroadcast(intent);
}
@Override
public void onFinish() {
stopSelf();
}
}.start();
return START_STICKY;
}
并且在广播/接收器寄存器之后的活动/片段中使用此代码。
public BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
@SuppressLint("DefaultLocale")
@Override
public void onReceive(Context context,Intent intent) {
Toast.makeText(MainActivity.this,"broad",Toast.LENGTH_LONG).show();
long millisUntilFinished = intent.getLongExtra("timer",0);
String counter = String.format("%02d:%02d:%02d",TimeUnit.MILLISECONDS.toHours(millisUntilFinished),TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished),TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished)));
textView.setText(counter);
}
};
本文链接:https://www.f2er.com/3150463.html