Java 合并两个服务?
我有一个后台有计时器的服务。此计时器在经过20秒后执行特定任务。我希望相同的计时器执行另一个任务,但秒数不同。同时启动这两项服务将很容易,但我正在尝试学习如何以另一种方式完成这项工作 我试过这个,但它没有出现:Java 合并两个服务?,java,android,multithreading,android-activity,service,Java,Android,Multithreading,Android Activity,Service,我有一个后台有计时器的服务。此计时器在经过20秒后执行特定任务。我希望相同的计时器执行另一个任务,但秒数不同。同时启动这两项服务将很容易,但我正在尝试学习如何以另一种方式完成这项工作 我试过这个,但它没有出现: cdt = new CountDownTimer(20000, 1000) { @Override public void onTick(long millisUntilFinished) { Log.
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");
现在,我应该在10秒钟内收到两条不同的日志消息。相反,我只得到一个。这是我的日志:
箭头指示应该有另一条日志消息的位置
我迷路了。我将非常感谢任何反馈(正面或负面)!非常感谢您的帮助。正如您自己所说,您可以同时启动这两项服务 或者在第一个服务中,您可以传递带有一些参数的
Intent
,以通知新的时间量,然后调用startService()
我的意思是,修改您的服务
,从呼叫意图
中获得额外的服务,类似这样:
@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秒,以此类推 完成计时器后,可以将
意图
传递给新的服务
/timer,添加所需的秒数。比如:
it.putExtra("Time", timeInMillis + 5000);
使用这种类型
cdt = new CountDownTimer(10000, 1000) { //finished on 10 Seconds
@Override
public void onTick(long millisUntilFinished) {
Log.v(TAG, /*"Time remaining " +*/ (millisUntilFinished / 1000) + " seconds left");
}
@Override
public void onFinish() {
Log.v(TAG, "First 10 Seconds Finished");
LoadNextCountdown(); // call the Next Countdown method
}
}
.start();
//Method for Next Countdown
public void LoadNextCountdown()
{
cdt2=new CountDownTimer(10000,1000) { //finished on 10 Seconds
@Override
public void onTick ( long millisUntilFinished){
Log.v(TAG, /*"Time remaining " +*/ (millisUntilFinished / 1000) + " seconds left");
}
@Override
public void onFinish () {
Log.v(TAG, "Next 10 Seconds Finished");
}
} .start();
}
快乐编码:)您的日志未显示,因为:
if(millisUntilFinished / 10000 == 0){ //TEN SECONDS
Log.v(TAG, (millisUntilFinished % 1000) + " seconds left");
}
您希望在有10000毫秒未完成但10000/10000=1而不是0时显示它
应该是:
if(millisUntilFinished / 10000 == 1) || if(millisUntilFinished % 10000 == 0)
或者简单地说:
if(millisUntilFinished == 10000)
谢谢你的回复!问题在于,10秒是在最初的20秒之后计算的。我的目标是计算20秒,但在计算10秒后(在同一个计时器中),然后显示日志。我该怎么做?谢谢我什么时候加点,因为我只想在10秒钟后加点。另外,还有一个旁注:我正计划在更多的时间间隔后发送这些消息。例如,5号、10号和15号;为每个人提供新的服务将是一件痛苦的事。我还有其他方法可以做到这一点吗?如果没有,那没关系,告诉我你给的代码的意图放在哪里。非常感谢!我认为有很多方法可以让你做到这一点。。。我的编辑就是其中之一。如果你真的在使用
服务
课程。谢谢,我给你的答案打了最好的分数,并且喜欢你的帖子!谢谢你的回答!如果(millisuntilfeigned==10000),我已经完成了最后一个方法。问题是,倒数计时器不准确,所以它不一定会达到10000大关。
if(millisUntilFinished == 10000)