【发布时间】:2014-10-21 10:55:21
【问题描述】:
我制作了一个简单的 Android GPS 跟踪服务应用,以被动模式记录设备位置。为了让 CPU 继续运转,我使用了唤醒锁,但它并不可靠。有时应用程序会运行 3 个小时。有时它可以完成一个完整的 24 小时循环。我没有在屏幕上看到任何崩溃报告——应用程序只是停止而没有任何迹象。电池寿命很好。
我将唤醒锁声明为主活动类变量
static WakeLock wakeLock;
并在启动 GPS 服务之前设置一次唤醒锁
PowerManager pm = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE);
wakeLock = pm.newWakeLock((PowerManager.PARTIAL_WAKE_LOCK),"MyAppNameWakelock");
wakeLock.setReferenceCounted(true);
wakeLock.acquire();
出于屏幕更改的原因,我还更新了 BackButton 函数以运行 moveTaskToBack(true); 而不是其正常操作。会不会跟这有关系?
是否有任何机械交互可以杀死正在使用的唤醒锁,例如连接电源线或 USB 线?
随后,Android 中是否有任何类型的日志可供我查看以了解我的应用停止的原因?
【问题讨论】:
-
“是否有任何机械交互可以杀死正在使用的唤醒锁,例如连接电源线或 USB 线?” - 不。 “为什么我的应用程序停止了?” -- 因为 Android 很可能终止了你的进程。进程不会永远存在。
标签: java android performance power-management wakelock