Android ScheduledExecutorService 週期性執行任務
阿新 • • 發佈:2019-02-20
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); } }