[英]How to pause handler.postDelayed() timer on Android
如何使用按鈕暫停handler.postDelayed()
計時器。 因此,當我再次單擊相同的按鈕時, handler.postDelayed()
計時器應該恢復。
handler.postDelayed(counterz, 60);
Handler
沒有計時器來調整。 您正在發布到線程的事件隊列,其中還運行了許多其他東西。
你可以取消發布的Runnable
的:
handler.removeCallbacks(counterz);
並再次發布,恢復。
處理程序沒有pause
方法。 您需要取消並再次運行。
http://developer.android.com/reference/android/os/Handler.html#removeCallbacks(java.lang.Runnable)
public final void removeCallbacks (Runnable r)
刪除消息隊列中Runnable r的所有待處理帖子。
如果不需要,您需要調用m_handler.removeCallbacks(m_handlerTask)
來取消運行。 如果再次需要,則需要再次運行該任務。
Handler m_handler;
Runnable m_handlerTask ;
m_handler = new Handler();
m_handlerTask = new Runnable()
{
@Override
public void run() {
// do something
m_handler.postDelayed(m_handlerTask, 1000);
}
};
m_handlerTask.run(); // call run
假設您使用計時器。 甚至計時器也沒有暫停方法。
public class YourActivity extends AppCompatActivity {
private static boolean handlerflag=false;
private Handler handler;
private Runnable runnable;
private int myind=0,index=0,count=0;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.your_activtiy);
//oncreate exe only
handlerflag=true;
handler = new Handler();
startyourtime(0);
}
private void startyourtime(int a) {
myind=0;
for (index=a; index<10 ;index++) {
myind++;
runnable=new Runnable() {
count++;
@Override
public void run() {
//your code here
}
};handler.postDelayed(runnable, Constants.TIME_LIMIT * myind);
}
@Override
protected void onPause() {
super.onPause();
handlerflag=false;
handler.removeCallbacksAndMessages(null);
}
@Override
protected void onResume() {
super.onResume();
if(!handlerflag)
{
startyourtime(count);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.