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()
確認します。の場合は使用を中止してください。action
Intent
action.equals("com.yourapp.action.stopservice")
Service
this.stopSelf()
于 2012-07-16T12:02:54.263 に答える
0
Kotlin では、このコードを使用してonStartCommand()メソッド内でサービスを停止できます。
Handler(Looper.getMainLooper()).postDelayed({ stopSelf() }, 10000)
于 2021-01-18T17:11:16.303 に答える