【发布时间】:2016-12-18 19:55:10
【问题描述】:
我正在尝试让服务在 Activity 生命周期之后保持活跃。
在两部手机(Samsung Galaxy S6 和 Sony Xperia Z3 Compact)上,在与 Activity 不同的进程中启动 Activity,然后在 Service 可见且显示通知时滑动删除应用程序以保持服务处于活动状态。
在第三部手机上,华为荣耀 8 完全相同的代码会破坏服务并立即取消任何预定的警报。
我每 10 秒安排一次警报(它们在华为上会立即取消,而在三星/索尼上可以使用)。并在后台运行服务时激活 LocationListener。
另一个区别是,工作手机上的优先 MAX 和正在进行的通知不能通过滑动或清除来取消,但在华为上也是可以的。
我已要求忽略电池优化和其他设置,没有任何区别。我还尝试寻找在屏幕关闭时不杀死应用程序的选项,华为似乎也立即这样做了。
在这种情况下,可以做些什么来保持服务在 Activity 被终止或只是没有主动运行后继续运行。如果内存不足,则活动会继续,但服务不会,因为它几乎不会消耗任何内存。但是使用此设置,服务会立即终止。
我是否正在查看我可能无法通过代码预测或控制的特定制造设置?
对于此类问题,我能看到的唯一可能的解决方案是向系统发送静默推送,检查服务是否非常频繁地处于活动状态,然后在它应该处于活动状态时重新启动它(由于用户选择这样做但系统无论如何都要杀死它)。
【问题讨论】:
-
我不知道解决方案是什么,但是如果您在 Play 商店中分发并且找不到修复程序,您可以从支持的设备列表中排除有问题的设备。跨度>
-
华为有一个“不要在屏幕关闭时杀死应用程序”的选项,但尚未找到通过代码设置此值的选项,并且使用电池优化似乎没有效果,因为它不会改变它允许。
标签: android android-activity service lifecycle