1. 程式人生 > >Android 開發之 定時器 Handler + Runnable方式

Android 開發之 定時器 Handler + Runnable方式

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.other_main);
<span style="white-space:pre">	</span>//開始進行更新
        selfHandler.postDelayed(runnable, 1000);
        findViewById(R.id.button3).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                   selfHandler.removeCallbacks(runnable);
            }
        });
    }


    Handler selfHandler = new Handler();
    Runnable runnable = new Runnable() {
        @Override
        public void run() {
            try {
                selfHandler.postDelayed(this,1000);
                swit.setText(String.valueOf(new Date()));

            }catch (Exception e){
                System.out.println("exception " + e);

            }
        }
    };

1.定時器實現步驟:

  1. 建立Handler物件。注意是

importandroid.os.Handler,下的handler.
2. 建立runnable物件
Runnable runnable = new Runnable() {
        @Override
        public void run() {
            try { //
                selfHandler.postDelayed(this,1000); 
                swit.setText(String.valueOf(new Date()));  //需要執行的語句。swit是一個textSwitcher

            }catch (Exception e){
                System.out.println("exception " + e);

            }
        }
    };
附帶 : swit之TextSwitcher程式碼
        swit = (TextSwitcher) findViewById(R.id.textSwitcher);
        swit.setFactory(this);

        Animation in = AnimationUtils.loadAnimation(this, android.R.anim.fade_in);
        Animation out = AnimationUtils.loadAnimation(this, android.R.anim.fade_out);

        swit.setInAnimation(in);
        swit.setOutAnimation(out);

3.在Oncreate方法中,進行呼叫
  selfHandler.postDelayed(runnable, 1000);
        
4.我添加了一個按鈕,可以停止這個定時器
findViewById(R.id.button3).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                   selfHandler.removeCallbacks(runnable); //Handler,Runnable與上面對應
            }
        });

總結:
我是用Android studio建立的專案:
下載程式碼:原始碼下載