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

サービスは、サイクル中に何らかの仕事をし、しばらくの間眠ります。

私見、これはの不適切な使用ですIntentServiceService自分で管理する独自のバックグラウンドスレッドを使用して、定期的に作成してください。

これを行う方法はありますか?

Service自分で管理する独自のバックグラウンドスレッドを使用して、通常のを作成します。たとえば、サービスのまたはで、ループのScheduledExecutorService代わりにを使用できます。sleep()shutdown()shutdownNow()onDestroy()

于 2012-04-28T11:48:34.427 に答える