【发布时间】:2018-08-22 22:18:46
【问题描述】:
我有一项服务,我想在用户点击特定按钮时停止并重新启动,我有:
stopService(new Intent(getBaseContext(), TimerService.class));
startService(new Intent(getBaseContext(), TimerService.class));
但是,我的印象是每次点击按钮时实际上都会创建多个服务。如何在不创建重复项的情况下启动和停止相同的服务?
编辑:不幸的是,建议的项目对我不起作用。不幸的是,在尝试实施给定的答案时,它并没有改变任何东西。我的初始计时器记录了它的滴答声,不幸的是,第二个计时器仍在发生滴答声,它嵌套在 onFinish 函数中仍未发生。所以不能停止服务。
【问题讨论】:
-
服务或线程中是否有处理程序?如果是,您应该通过覆盖方法 onDestroy 来停止它们,例如,对于处理程序,您应该调用 handler.removecallbacksandmessages(null) ,因此如果您不删除或销毁它们,所有处理程序都将被删除,它们将保持活动状态。如果这不是您的情况,请分享服务实现
-
startService如果它已经在运行,请不要创建另一个服务实例,但是如果您想完全重启,请考虑在您的 onDestroy 中销毁/释放任何资源/计时器等并调用stopService其次是startService -
聪明的思维卡西姆。会试试的。
标签: java android android-service