1

我需要帮助解决这种情况:

  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();
        }
    

...

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

我试过打电话stopService(),但它不起作用。有什么解决方案如何做到这一点?提前致谢。

4

1 回答 1

2

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

恕我直言,这是对IntentService. 请创建一个常规Service的、您自己管理的后台线程。

有什么解决方案如何做到这一点?

创建一个常规Service的,您自己管理的后台线程。例如,您可以使用 aScheduledExecutorService而不是sleep()循环,shutdown()shutdownNow()服务的onDestroy().

于 2012-04-28T11:48:34.427 回答