当设备进入睡眠模式时,阻止我的应用程序进入睡眠状态

时间:2017-01-01 07:15:45

标签: android android-service

如果设备进入睡眠模式,我已经编写了一个应该连续运行的应用程序。我尝试了很多东西,比如服务(也有startForground),报警管理器和persistant =“true”,但是当设备进入睡眠状态时(通过用户或设备),我的应用程序终止。甚至PowerManager也不起作用。

设备设置中有一个选项是“屏幕关闭后继续运行”(在huawei设备中:设置> app>我的应用选项>电池>屏幕关闭后继续运行)。因此,当此选项处于活动状态时,应用程序将永远运行。我希望在我的应用程序中实现类似的实现。

我看到了一些实现此功能的应用,但我不知道如何实现。 那我怎么能这样做呢?

3 个答案:

答案 0 :(得分:1)

在某些设备(华为,小米,LG)上,有一个特殊设置,其中包含允许在后台运行的应用列表。听起来你正在谈论尝试完成同样的事情。这不能在这些设备上完成。在这些设备上,除非您的应用程序被添加到允许在后台运行的应用程序列表中("受保护的应用程序"在华为上),否则如果关闭,Android框架将不会重新启动您的应用程序。您无法以编程方式将您的应用添加到此列表中,并且您无法使用此功能。

答案 1 :(得分:0)

使用ForgroundService
如果您使用应用程序管理器检查设备应用程序,您可以看到其中一些使用始终运行的服务。即使你阻止他们,他们中的一些人也会再次开始工作 在android developer中查看有关服务行为的更多信息 并寻找“保持服务活着”。

答案 2 :(得分:0)

某些应用程序需要保持屏幕打开,例如游戏或电影应用程序。最好的方法是在活动中使用FLAG_KEEP_SCREEN_ON(并且仅在活动中使用,而不在服务或其他应用程序组件中使用)。

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);