我在后台有计时器的服务。经过20秒后,此计时器将执行某些任务。我希望同一个计时器执行另一个任务,但是要用不同的秒数。通过同时启动两个服务,这将很容易,但是我正在尝试学习如何以其他方式实现它。
我试过了,但是没有出现:
cdt = new CountDownTimer(20000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
Log.v(TAG, /*"Time remaining " +*/ (millisUntilFinished / 1000) + " seconds left");
if(millisUntilFinished / 10000 == 0){ //TEN SECONDS
Log.v(TAG, (millisUntilFinished % 1000) + " seconds left");
}
}
@Override
public void onFinish() {
Log.v(TAG, "Finished");
现在,我应该在十秒钟时收到两条不同的日志消息。相反,我只能得到一个。这是我的logCat:
箭头指示应该在何处显示另一条日志消息。
我迷路了。我真的很感激任何反馈(正面或负面)!非常感谢您的所有帮助。
最佳答案
正如您自己说的那样,您可以同时启动两种服务。
或者在第一个服务内,您可以传递带有某些参数的Intent
来通知新的时间量,然后调用startService()
。
Intent it = new Intent(getApplicationContext(), YourService.class);
it.putExtra("Time", timeInMillis);
startService(it);
我的意思是,修改您的
Service
以便从调用Intent
中获得更多收益,如下所示:@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (intent != null) {
long time = intent.getLongExtra("Time",0);
// Do your ticking here, based on that variable.
}
//...
}
编辑:假设您要使计时器首先在5秒运行,然后在10、15等运行。
完成计时器后,可以将
Intent
传递给新的Service
/ Timer,并添加所需的秒数。喜欢:it.putExtra("Time", timeInMillis + 5000);