唤醒锁和暂停的应用程序

Wakelocks and paused app

在我的应用程序中,我想以固定的时间间隔记录 phone 的位置。为此,我有一个 TimerTask 用于定期记录位置,还有一个 WakeLock 用于即使 phone 处于睡眠状态也能继续记录。

我的问题是,当应用程序不再显示在前台时,Wakelock 不会阻止应用程序进入 "Stop" 状态。因此,我的应用程序经常但显然是随机地被系统销毁(没有崩溃,也没有调用 onDestroy),并且记录停止。

即使我的应用程序进入后台,我怎样才能让我的录制过程继续进行?

In my application, I want to record the phone's location at fixed interval.

使用AlarmManagerJobScheduler 以固定间隔进行控制。使用 WakefulBroadcastReceiver 作为警报事件的接收者,并将工作委托给获取位置的 Service。一旦获得位置或在超时后调用服务 stopSelf()completeWakefulIntent(),因为现在可能无法获得位置。

或者,如果您使用的是 Play 服务中的融合位置 API,请尝试采用 PendingIntent 而不是侦听器的 API 版本,您可能可以跳过闹钟。

I have a TimerTask to record the location on a regular basis

这只会在您的过程存在时起作用,并且不会存在那么久。

and a WakeLock for the recording to continue even when the phone is aslept

您的用户会非常不满意您让 CPU 一直开着并耗尽电池电量。