[英]Android Runnable not stopping after removeCallbacks()
我試圖使用removeCallbacks停止Runnable,但是不知何故它不會停止。 -這是我的變量
private int mInterval = 2000; // 2 seconds by default, can be changed later
private Handler mHandler = new Handler();
和我可運行的
Runnable mStatusChecker = new Runnable() {
@Override
public void run() {
try {
checkPayNow();
} finally {
// 100% guarantee that this always happens, even if
// your update method throws an exception
mHandler.postDelayed(mStatusChecker, mInterval);
}
}
};
和我正在運行的方法,直到它給我一定的值,然后我停止
public void checkPayNow(){
if (!url.isEmpty()){
//url now has text
mHandler.removeCallbacks(mStatusChecker);
}else {
//no text yet
}
}
您可以嘗試在沒有removeCallbacks
情況下進行removeCallbacks
如下所示:
Runnable mStatusChecker = new Runnable() {
@Override
public void run() {
if(!checkPayNow()) {
//if not ready so far, then check in some delay again
mHandler.postDelayed(mStatusChecker, mInterval);
}
}
};
public boolean checkPayNow(){
return !url.isEmpty();
}
boolean stoped = false;
Runnable mStatusChecker = new Runnable() {
@Override
public void run() {
try {
checkPayNow();
} finally {
if(!stoped)
mHandler.postDelayed(mStatusChecker, mInterval);
}
}
};
要停止時,使stoped = true
。
並從checkPayNow()
刪除處理程序。
public void checkPayNow(){
if (!url.isEmpty()){
//url now has text
//mHandler.removeCallbacks(mStatusChecker);
}else {
//no text yet
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.