Serviceを使用して実行していAlarmManagerます。はService正常に動作しており、Service手動で ( をクリックしてButton) を停止していますが、しばらくしてから停止する必要がServiceあります (10 秒かかる場合があります)。を使用できますthis.stopSelf();が、一定時間後に呼び出すにはどうすればよいthis.stopSelf(); ですか?
4526 次
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
- を作成して
Intentを開始しServiceます。actionをカスタム アクションに設定します"com.yourapp.action.stopservice"。 - を使用して
AlarmManager、 を開始してIntentを開始しServiceます (現在行っていることは何でも)。がすでに実行されている場合、これはonStartCommand()のに配信されます。Service - で、着信の を
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 に答える