Android 从活动中停止IntentService

Android 从活动中停止IntentService,android,android-intent,intentservice,Android,Android Intent,Intentservice,在这种情况下,我需要帮助: 我有活动,什么启动了IntentService 服务人员在循环和睡眠时做一些工作 服务的主要周期是无止境的,所以我需要再次停止它的活动 我必须能够结束活动,再次启动它,并从活动的新“实例”停止IntentService public class MyService extends IntentService { public MyService() { super("MyService"); } public MyS

在这种情况下,我需要帮助:

  • 我有活动,什么启动了IntentService
  • 服务人员在循环和睡眠时做一些工作
  • 服务的主要周期是无止境的,所以我需要再次停止它的活动
  • 我必须能够结束活动,再次启动它,并从活动的新“实例”停止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();
        }
    
  • 我尝试调用
    stopService()
    ,但它不起作用。有什么解决办法吗? 提前谢谢

    服务人员在循环和睡眠时做一些工作

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

    有什么解决办法吗

    创建一个常规的
    服务
    ,使用您自己管理的后台线程。例如,您可以使用
    ScheduledExecutorService
    而不是
    sleep()
    循环,在服务的
    ondestory()
    中使用
    shutdownNow()或
    shutdownNow()

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