1. 程式人生 > >Android ScheduledExecutorService 週期性執行任務

Android ScheduledExecutorService 週期性執行任務

1.需求:

    我的頁面上有個按鈕預設顯示的文字 one

    如果當前時間為 9:00 時 按鈕的文字不改變

    但當時間到9:20時 需要將按鈕的文字改變為 two

2.思路:

   需要週期性的執行某一任務,更改UI元件

3.程式碼參考

/*全域性變數 方便停止定時操作*/
ScheduledExecutorService executorService = null;
MyHandler myHandler;

/*onCreate方法中*/
/*停止操作 executorService.shutdown();*/
   executorService  = Executors.newScheduledThreadPool(1);
                executorService.scheduleAtFixedRate(
                        new Runnable() {
                            @Override
                            public void run() {
                                myHandler = new MyHandler(this);
                                MyThread m = new MyThread();
                                new Thread(m).start();
                            }
                        },0,10, TimeUnit.MILLISECONDS
                );

    public class MyHandler extends Handler {
        public MyHandler(){}
        public MyHandler(Looper L){
            super(L);
        }
        @Override
        public void handleMessage(Message msg){
            /*此處用於更新UI 通過 返回的訊息內容*/
            Bundle bundle = msg.getData();
            String res = bundle.getString("Res");
            if(res == "1")
                /*btnMes為操作的按鈕*/
                btnMes.setText("two");
        }
    }

    public class MyThread implements Runnable{
        public void run(){
            Message message=myHandler.obtainMessage();
            Bundle bundle = new Bundle();
            bundle.putString("Res","1");
            message.setData(bundle);
            myHandler.sendMessage(message);
        }
    }