唤醒锁和暂停的应用程序
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.
使用AlarmManager
或JobScheduler
以固定间隔进行控制。使用 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 一直开着并耗尽电池电量。
在我的应用程序中,我想以固定的时间间隔记录 phone 的位置。为此,我有一个 TimerTask
用于定期记录位置,还有一个 WakeLock
用于即使 phone 处于睡眠状态也能继续记录。
我的问题是,当应用程序不再显示在前台时,Wakelock
不会阻止应用程序进入 "Stop" 状态。因此,我的应用程序经常但显然是随机地被系统销毁(没有崩溃,也没有调用 onDestroy
),并且记录停止。
即使我的应用程序进入后台,我怎样才能让我的录制过程继续进行?
In my application, I want to record the phone's location at fixed interval.
使用AlarmManager
或JobScheduler
以固定间隔进行控制。使用 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 一直开着并耗尽电池电量。