Timer または TimerTask を停止しようとしていますが、メソッドはタスクを破棄しません...
まず、タイマータスクを設定するコード:
scanTask = new TimerTask() {
public void run() {
handler.post(new Runnable() {
public void run() {
load_unread();
Log.d("TIMER", "Timer set off");
}
});
}};
t=新しいタイマー(); t.schedule(scanTask, 300, 10000);
そして今、onDestroy でこのタスクを「強制終了」しようとしています。
@Override
protected void onDestroy() {
super.onDestroy();
scanTask.cancel();
t.cancel();
t.purge();
handler.removeCallbacksAndMessages(null);
System.out.println("Chat destroyed");
}
しかし、これはうまくいきませんか?解決策を見つけるのを手伝ってもらえますか?
ありがとう!
編集:私はついに答えを見つけました。なぜ私のものがうまくいかなかったのかわかりません...
これは、同じ問題を抱えているすべての人のためのコードです。とにかく、これはより優れたより効率的なソリューションだと思います:
private Handler handler = new Handler();
runnable.run();
private Runnable runnable = new Runnable()
{
public void run()
{
//
// Do the stuff
//
handler.postDelayed(this, 1000);
}
};
そして停止するには:
handler.removeCallbacks(runnable);
ここから取得: