0%

安卓下轮询操作的几种方式

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。