3

Serviceを使用して実行していAlarmManagerます。はService正常に動作しており、Service手動で ( をクリックしてButton) を停止していますが、しばらくしてから停止する必要がServiceあります (10 秒かかる場合があります)。を使用できますthis.stopSelf();が、一定時間後に呼び出すにはどうすればよいthis.stopSelf(); ですか?

4

5 に答える 5

4

timerこれは、 と を一緒に使用して簡単に実現できますtimerTask

この回答が提案されなかった理由はまだわかりません。代わりに、提供された回答が直接的で単純な解決策を提供していません。

サービス サブクラスで、これらをグローバルに作成します (グローバルでなくても作成できますが、問題が発生する可能性があります)。

//TimerTask that will cause the run() runnable to happen.
TimerTask myTask = new TimerTask()
{
    public void run()
    {
        stopSelf();
    }
};


//Timer that will make the runnable run.
Timer myTimer = new Timer();

//the amount of time after which you want to stop the service
private final long INTERVAL = 5000; // I choose 5 seconds

onCreate()サービス内で、次の操作を行います。

myTimer.schedule(myTask, INTERVAL);

これにより、5 秒後にサービスが停止します。

于 2013-11-08T14:38:38.730 に答える
3

IntentService の使用を検討する必要がありますか? 作業がなくなると停止するので、自分で状態を管理する必要はありません。

于 2012-07-16T12:04:52.903 に答える
3

それを行うには、サービス内のpostDelayedメソッドを使用Handlerします。例えば:

new Handler().postDelayed(new Runnable() {
@Override
    public void run() {
        stopSelf();
    }
}, 10000);    //will stop service after 10 seconds
于 2012-07-16T11:58:02.670 に答える
0
  1. を作成してIntentを開始しServiceます。actionをカスタム アクションに設定します"com.yourapp.action.stopservice"
  2. を使用してAlarmManager、 を開始してIntentを開始しServiceます (現在行っていることは何でも)。がすでに実行されている場合、これはonStartCommand()のに配信されます。Service
  3. で、着信の をonStartCommand()確認します。の場合は使用を中止してください。actionIntentaction.equals("com.yourapp.action.stopservice")Servicethis.stopSelf()
于 2012-07-16T12:02:54.263 に答える
0

Kotlin では、このコードを使用してonStartCommand()メソッド内でサービスを停止できます。

 Handler(Looper.getMainLooper()).postDelayed({ stopSelf() }, 10000)
于 2021-01-18T17:11:16.303 に答える