簡體   English   中英

如何在Android上暫停handler.postDelayed()計時器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM