0
我創建了一個處理程序來重複執行一個任務,並且我還希望在條件滿足後在該處理程序中銷燬它。處理程序不停止 - Android
pinHandler = new Handler();
現在,我創建了兩個函數分別啓動和停止任務。現在
void startRepeatingPins() {
mPinSetter.run();
}
Runnable mPinSetter = new Runnable() {
@Override
public void run() {
try{
System.out.println("PinIndwx count is :"+pinIndexCount);
if(pinIndexCount==(plist.size()-1))
{
stopUpdatingPins();
pinIndexCount=0;
//pinHandler.removeCallbacks(mPinSetter);
System.out.println("Handler stopped by itself.");
}
else
{
updatePoint(plist.get(pinIndexCount));
pinIndexCount++;
}
}
finally {
pinHandler.postDelayed(mPinSetter, pinInterval);
}
}
};
private void stopUpdatingPins()
{
pinIndexCount=0;
pinHandler.removeCallbacks(mPinSetter);
System.out.println("Called the stop function.");
}
,問題是,如果我稱之爲stopUpdatingPins
功能,處理程序停止,但是當我嘗試從處理程序中自動停止它,它只是不停止。雖然stopUpdatingPins
函數確實被調用。
爲什麼它會停止當我明確調用removecallbacks但不是當我在處理程序中調用它時? – driftking9987
我在自己的回答中解釋過**你在最後添加了延遲,這意味着如果循環並在最後再次啓動,你首先停止**這意味着你正在停止,但是你又立即開始。 –