在我的应用程序中,我想以固定间隔记录手机的位置。为此,我有一个TimerTask
来定期录制位置,WakeLock
即可在手机停止播放时继续录制。
我的问题是,当Wakelock
不再显示在前台时,onDestroy
不会阻止应用进入“停止”状态。因此,我的应用程序经常,但显然是随机的,被系统破坏(没有崩溃,也没有调用pb.Location = new Point(300, 300);
),录制停止。
即使我的应用程序进入后台,我怎样才能保持录制过程?
答案 0 :(得分:2)
在我的应用程序中,我想以固定的间隔记录手机的位置。
使用AlarmManager
或JobScheduler
以固定间隔获得控制权。使用WakefulBroadcastReceiver
作为警报事件的收件人,并将工作委派给获取该位置的Service
。服务电话stopSelf()
和completeWakefulIntent()
一旦获得该位置或在一些超时后调用,因为现在可能无法获得该位置。
或者,如果您正在使用Play服务中的融合位置API,请尝试使用PendingIntent
代替收听者的API版本,并且您可以跳过警报。
我有一个TimerTask来定期记录位置
这只会在你的流程到来时才有效,并且不会那么久。
和一个WakeLock,即使手机睡着也能继续录音
您的用户非常不满意您不断保持CPU电量并耗尽电量。