Android - 尝试停止ScheduledExecutorService

时间:2014-04-10 19:38:32

标签: android scheduledexecutorservice

我正在使用创建活动方法的下一个代码 -

        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不会停止。

任何想法为什么会这样?

感谢您提供任何帮助

1 个答案:

答案 0 :(得分:0)

ExecutorService.shutdownNow()的文档包含以下段落:

  

除了努力尝试停止处理之外,没有任何保证   积极执行任务。例如,典型的实现方式   通过Thread.interrupt()取消,因此任何无法响应的任务   中断可能永远不会终止。

由于您的Runnable正在启动Android服务(在新线程中),因此服务应该测试

  

Thread.currentThread()。isInterrupted()

定期退出,如果确实如此。