我正在使用创建活动方法的下一个代码 -
scheduleTaskExecutor = Executors.newScheduledThreadPool(5);
scheduleTaskExecutor.scheduleAtFixedRate(new Runnable() {
public void run() {
Intent intent = new Intent("com.eample.one.services.action.check");
startService(intent);
}
}, 0, 5000, TimeUnit.MILLISECONDS);
正如你所看到的那样,我每隔5秒钟就会拨打一次服务。
我已经在清单中声明了服务 -
<service
android:name="com.eample.one.services.CheckService"
android:exported="false" >
<intent-filter>
<action android:name="com.eample.one.services.action.check" />
</intent-filter>
</service>
现在在同一个活动中,我已经宣布了ScheduledExecutorService,我有一个退出按钮。
按下它时,我试图停止ScheduledExecutorService,就像这样 -
scheduleTaskExecutor.shutdownNow();
finish();
甚至
scheduleTaskExecutor.shutdown();
finish();
结束()当然是完成活动。
但事实是,按下该按钮后scheduleTaskExecutor不会停止。
任何想法为什么会这样?
感谢您提供任何帮助
答案 0 :(得分:0)
ExecutorService.shutdownNow()的文档包含以下段落:
除了努力尝试停止处理之外,没有任何保证 积极执行任务。例如,典型的实现方式 通过Thread.interrupt()取消,因此任何无法响应的任务 中断可能永远不会终止。
由于您的Runnable正在启动Android服务(在新线程中),因此服务应该测试
Thread.currentThread()。isInterrupted()
定期退出,如果确实如此。