我在后台有计时器的服务。经过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:

java - 结合两种服务?-LMLPHP

箭头指示应该在何处显示另一条日志消息。

我迷路了。我真的很感激任何反馈(正面或负面)!非常感谢您的所有帮助。

最佳答案

正如您自己说的那样,您可以同时启动两种服务。

或者在第一个服务内,您可以传递带有某些参数的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);

09-10 01:09
查看更多