即使在 Android 的后台,RxSchedulerPurge 也总是定期加载 CPU

rob*_*ert 5 android rx-java

当我使用 Android studio 方法跟踪来分析我的应用程序的电池消耗问题时,我观察到在应用程序被主页按钮暂停后周期性的 CPU 负载。这种负载是由属于 RxJava 的线程引起的。使用主页按钮暂停应用程序后需要 2 分钟的方法跟踪

从 RxJava github 源获取的代码可能会导致问题。

public static void start() {
    for (;;) {
        ScheduledExecutorService curr = PURGE_THREAD.get();
        if (curr != null && !curr.isShutdown()) {
            return;
        }
        ScheduledExecutorService next = Executors.newScheduledThreadPool(1, new RxThreadFactory("RxSchedulerPurge"));
        if (PURGE_THREAD.compareAndSet(curr, next)) {

            next.scheduleAtFixedRate(new ScheduledTask(), PURGE_PERIOD_SECONDS, PURGE_PERIOD_SECONDS, TimeUnit.SECONDS);

            return;
        } else {
            next.shutdownNow();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

https://github.com/ReactiveX/RxJava/blob/2.x/src/main/java/io/reactivex/internal/schedulers/SchedulerPoolFactory.java

我试图更改清除周期时间,我在我的应用程序的 onCreate 应用程序中添加了以下代码,但它似乎不起作用。

System.setProperty("rx2.purge-period-seconds", "3600");
Run Code Online (Sandbox Code Playgroud)