我有一个应用程序,每分钟都会启动一个IntentService,在此期间获取UsageStats和UsageEvents。 我使用AlarmManager的setExact()方法来设置执行IntentService的时刻,并在IntentService的onCreate方法上再次调用setExact()来安排下一分钟执行IntentService。我这样做是因为AlarmManager的方法setRepeating()在一分钟时间内没有准确执行。我使用的代码是:
alarmM.setExact(AlarmManager.ELAPSED_REALTIME,SystemClock.elapsedRealtime()+60000,alarmAppIntent);
大部分时间和设备充电时都能正确执行。但是,当设备处于正常使用状态时,有时服务会每分钟停止重复一次(每次服务执行时都会创建通知以查看服务是否继续执行)以及IntentService何时停止重复Logcat说:
03-02 12:16:02.221 1173 12379 I ActivityManager: Process com.app.usage (pid 6390) has died
03-02 12:16:02.222 1173 1423 D DisplayManagerService: Display listener for pid 6390 died.
03-02 12:16:02.222 1173 12379 D ActivityManager: SVC-handleAppDiedLocked: app = ProcessRecord{73a4530 6390:com.app.usage/u0a251}, app.pid = 6390
03-02 12:16:02.222 1173 12379 D ActivityManager: cleanUpApplicationRecord -- 6390
03-02 12:16:02.222 1173 12379 D ActivityManager: SVC-mBroadcastQueues: com.android.server.am.BroadcastQueue@e800e85
03-02 12:16:02.222 1173 12379 D ActivityManager: SVC-mBroadcastQueues: com.android.server.am.BroadcastQueue@d0e4da
03-02 12:16:02.223 2049 2306 E WtProcessController: Error pid or pid not exist
03-02 12:16:02.315 1173 1378 D PerfServiceManager: [PerfService] MESSAGE_USER_DISABLE: 92
03-02 12:16:02.315 1173 1378 I libPerfService: [perfScnDisable] scenario:92
03-02 12:16:02.315 1173 1378 I libPerfService: 92: set max: -1, 0, -1,
03-02 12:16:02.316 1173 1378 I libPerfService: 92: set freq: -1, -1, 933000,
03-02 12:16:02.316 1173 1378 I libPerfService: 92: set gpu level: 0
03-02 12:16:02.447 3149 3166 I PerfService: PerfServiceNative_userEnableTimeoutMs:30, 1050
03-02 12:16:02.448 3149 3166 I PerfService: PerfServiceNative_notifyDisplayType:2
我使用的设备是MIUI 9.2(Android 6.0)的小米Redmi Note 4 Pro。我试图在应用程序中没有设置省电器,但问题还在继续。
有没有办法阻止应用程序使用其他库或配置死亡?