【发布时间】:2018-04-25 16:01:18
【问题描述】:
我有一个跟踪应用程序,它需要每 5 秒向网络服务器发送一次位置更新。只要应用程序处于唤醒状态/可见状态,它就可以正常工作。
如果设备被锁定,应用会在 15 分钟后进入睡眠状态(给或花一两秒)。
将应用添加到电池应用电源监视器下的“未受监控的应用”中也不会阻止它进入睡眠状态。
我尝试过创建唤醒锁,即
pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "TrackerTag");
wakeLock.acquire();
但即使这样也无济于事。该应用程序仍会进入睡眠状态并停止发送更新。我不需要保持屏幕开启(因此是 PARTIAL_WAKE_LOCK),但我确实需要应用保持清醒,以便将 GPS 坐标提供给服务器数据库。
我已将该应用程序添加到电池优化列表的忽略列表中,所以它并没有杀死它,上面的唤醒锁似乎什么也没做。
我还尝试将服务创建为前台服务,即Android - implementing startForeground for a service?,但这也不会保存应用在 15 分钟后进入睡眠状态。
我需要做什么来告诉 android“无论如何不要理会这个应用程序,除非我特别关闭并杀死它,否则不要停止它”?
【问题讨论】: