Android don'中的停止处理程序;行不通
我有一个处理程序:Android don'中的停止处理程序;行不通,android,handler,runnable,Android,Handler,Runnable,我有一个处理程序: private Runnable mRunnableReset = new Runnable() { public void run() { Log.i("MyApp", "mRunnableReset"); } }; private Handler mHandler = new Handler(); private Runnable mRunnable = new Runnable() { public void run() {
private Runnable mRunnableReset = new Runnable() {
public void run() {
Log.i("MyApp", "mRunnableReset");
}
};
private Handler mHandler = new Handler();
private Runnable mRunnable = new Runnable() {
public void run() {
while (true) {
try {
Thread.sleep(2000);
mHandler.post(mRunnableReset);
} catch (Exception e) {
// TODO: handle exception
}
}
}
};
我尝试在onDestroy()方法中使用此代码
但是mRunnable仍然在运行(我可以在LogCat中看到日志)。
如果我使用mRunnable.destroy(),我的应用程序会崩溃
我怎样才能阻止这一切?
谢谢。你在用什么
while(true){
Thread.sleep(2000);
mHandler.post(mRunnableReset);
}
那么它将如何停止?不会的
相反,它应该是这样的
private Runnable mRunnableReset = new Runnable() {
public void run() {
Log.i("MyApp", "mRunnableReset");
mHandler.removeCallbacks(mRunnableReset);
mHandler.post(mRunnableReset);
}
};
private Handler mHandler = new Handler();
private Runnable mRunnable = new Runnable() {
public void run() {
try {
Thread.sleep(2000);
mHandler.post(mRunnableReset);
} catch (Exception e) {
// TODO: handle exception
}
}
};
然后停止mrunablereset
使用mHandler.removeCallbacks(mrunablereset)代码>
最好使用mHandler.postdayed(mrunablereset,2000)
而不是Thread.sleep(2000)代码>
另外,请检查我的答案,以全面了解处理程序的工作方式。在发布Runnable(而不是常规的post()
)时,使用postDelayed()
)
private Runnable mRunnableReset = new Runnable() {
public void run() {
Log.i("MyApp", "mRunnableReset");
mHandler.removeCallbacks(mRunnableReset);
mHandler.post(mRunnableReset);
}
};
private Handler mHandler = new Handler();
private Runnable mRunnable = new Runnable() {
public void run() {
try {
Thread.sleep(2000);
mHandler.post(mRunnableReset);
} catch (Exception e) {
// TODO: handle exception
}
}
};