关于后台服务的 ANR

ANR on background services

我是运行 2个后台服务

一个检测摇晃,另一个检测长按电源键。

服务在后台运行良好,但有时当应用程序在后台时,我会一次又一次地弹出此消息 "Application_name isn't responding, Wait or stop"。这两个服务都是 onStartCommand()

START_STICKY 的正常服务

我已经在清单中声明了这两项服务。

还有一件事,有时当我打开我的应用程序时(在服务 运行 一段时间后),我在应用程序启动时看到一个纯白的屏幕,它一直停留在那里。

如果有人对这些场景有任何想法,请告诉我。如果您也需要查看代码,请告诉我。

  1. 查找后台发生的 UI 更新。
  2. 确保您的代码中没有不必要的 Timer()。如果存在,则在不需要时停止它们。
  3. 如果您正在使用 Geocoder,请尝试从后台线程获取位置。
  4. 最后一个选择是尝试实施 Leak Canary 并修补所有漏洞。