【发布时间】:2018-02-23 15:04:01
【问题描述】:
我正在创建一个需要跟踪用户正在执行的很多事情的应用程序。这一切都需要在后台中进行,并且需要持续运行。提到两个:使用谷歌活动 API 持续跟踪活动和使用谷歌地理围栏 API 进行位置跟踪。
我已经为我正在跟踪的每个参数创建了一个(意图)服务,并且一切顺利。即使您终止应用程序,该服务也会在后台重新启动并按预期执行。
我的问题:一旦我锁定手机,它就会停止跟踪。只要我点亮屏幕或解锁,它就会再次工作。
注意 1:我正在使用一个主要服务来控制所有其他(意图)服务感知参数。 (我不确定这是否是最好的方法,或者我是否应该创建一项大型服务?...)。
我已经尝试过是 PARTIAL_WAKE_LOCK 来保持唤醒我的主要服务来控制所有其他服务。这没有用。我还尝试使用 PARTIAL_WAKE_LOCK 来保持唤醒感知参数的服务。这也不起作用。
注意2:我知道这不应该在实际应用程序中完成,但这是必须的。这是一个实验应用程序,永远不会进入 Playstore。此外,所有用户都将被告知将被跟踪的内容以及在实验期间这将如何影响他们的电池。
@Override
public void onCreate() {
super.onCreate();
...
PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
"MyWakelockTag");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (! keepCPUOn){
wakeLock.acquire();
keepCPUOn = true;
}
}
清单:
<uses-permission android:name="android.permission.WAKE_LOCK" />
非常感谢!
【问题讨论】:
-
你试过AlarmManager。查看thisJBA的解决方案
-
@Melchizedek,没有找到那个解决方案。会尽快尝试并发布我的发现!
-
好的,很高兴为您提供帮助。
标签: android android-studio service background android-wake-lock