1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| 1. Handler + Runnable(最常用,简单) private Handler handler = new Handler(Looper.getMainLooper()); private Runnable batteryRunnable = new Runnable() { @Override public void run() { updateBattery(context); // 查询电池 handler.postDelayed(this, 1000); // 每秒重复 } };
public void start() { handler.post(batteryRunnable); }
public void stop() { handler.removeCallbacks(batteryRunnable); } 优点:简单、直接、在主线程可操作 UI。 缺点:任务在主线程执行,不适合耗时操作
2. ScheduledExecutorService(后台线程) private ScheduledExecutorService scheduler;
public void start() { scheduler = Executors.newSingleThreadScheduledExecutor(); scheduler.scheduleAtFixedRate(() -> updateBattery(context), 0, 1, TimeUnit.SECONDS); }
public void stop() { if (scheduler != null) { scheduler.shutdownNow(); scheduler = null; } }
优点:在后台线程,不会阻塞主线程,可扩展。 缺点:操作 UI 需要 Handler 或 runOnUiThread()。
3. RxJava(如果项目已经有 Rx)
disposable = Observable.interval(0, 1, TimeUnit.SECONDS) .observeOn(AndroidSchedulers.mainThread()) .subscribe(tick -> updateBattery(context));
优点:易于管理订阅和取消,UI 操作简单。 缺点:依赖 RxJava。
|