Wakelocks和暂停的应用程序

时间:2015-05-16 13:43:35

标签: java android wakelock

在我的应用程序中,我想以固定间隔记录手机的位置。为此,我有一个TimerTask来定期录制位置,WakeLock即可在手机停止播放时继续录制。

我的问题是,当Wakelock不再显示在前台时,onDestroy不会阻止应用进入“停止”状态。因此,我的应用程序经常,但显然是随机的,被系统破坏(没有崩溃,也没有调用pb.Location = new Point(300, 300);),录制停止。

即使我的应用程序进入后台,我怎样才能保持录制过程?

1 个答案:

答案 0 :(得分:2)

  

在我的应用程序中,我想以固定的间隔记录手机的位置。

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

或者,如果您正在使用Play服务中的融合位置API,请尝试使用PendingIntent代替收听者的API版本,并且您可以跳过警报。

  

我有一个TimerTask来定期记录位置

这只会在你的流程到来时才有效,并且不会那么久。

  

和一个WakeLock,即使手机睡着也能继续录音

您的用户非常不满意您不断保持CPU电量并耗尽电量。