从Activity停止IntentService

时间:2012-04-28 11:15:01

标签: android android-intent intentservice

我需要这方面的帮助:

  1. 我有活动,是什么启动了IntentService。
  2. 服务在循环和睡眠中做一些工作一段时间。
  3. 服务的主要周期是无止境的,所以我需要再次停止活动。
  4. 我必须能够结束活动,再次启动它并从活动的新“实例”停止IntentService。

    public class MyService extends IntentService {
    
        public MyService()
        {
            super("MyService");
        }
    
        public MyService(String name) {
            super(name);
        }
    
        @Override
        protected void onHandleIntent(Intent intent) {
            Log.d("SERVICE", "start");
    
            while(true)
            {
                SystemClock.sleep(1000);
                Log.d("SERVICE", "tick");
            }
        }
    
        @Override
        public void onDestroy() {
            Log.d("SERVICE", "end");
            super.onDestroy();
        }
    
  5. ...

    Intent intent = new Intent(getApplicationContext(), MyService.class);
    startService(intent);       
    

    我试过调用stopService(),但它没有用。有没有解决方法怎么做? 提前谢谢。

1 个答案:

答案 0 :(得分:2)

  

服务在循环和睡眠中做一些工作一段时间。

恕我直言,这是对IntentService的不当使用。请创建一个常规Service,使用您自己管理的自己的后台主题。

  

有没有解决方法怎么做?

使用您自己管理的自己的后台线程创建常规Service。例如,您可以在服务ScheduledExecutorService中使用sleep()shutdown()来使用shutdownNow()代替onDestroy()循环。