Android 7.0 (Nougat) 打盹模式停止 Web 服务

标签 android android-wifi android-doze

我有一个带有 WiFi 锁的 Android 前台服务,它充当另一个本地设备的 Web 服务。在打瞌睡模式之前,获取 WiFi 锁并根据需要提供服务非常有效。

即使我的应用关闭了电池优化,当屏幕关闭几分钟后,手机仍然会关闭应用。

如何正确提醒 Android 客户明确请求的服务正在前台执行,并且他们不希望手机此时进入休眠状态?

编辑:这个问题在 Android 8.0 (Oreo) 中仍然存在

最佳答案

你可以这样做:就像你调用你的服务一样,你可以添加一个代码来保持屏幕唤醒。这将避免手机自动锁定。以下是文档中的示例代码 fragment 。

    public class MainActivity extends Activity {
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //keep screen awake
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
      }

这种方法的优势在于,与唤醒锁不同,它不需要特殊权限,并且平台可以正确管理用户在应用程序之间的移动,而您的应用程序无需担心释放未使用的资源。 此外,您可以按照此 SO answer 中所述的有效方式使用警报管理器。 :

关于Android 7.0 (Nougat) 打盹模式停止 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39775601/

相关文章:

android - Android:仅在我更新市场上的应用程序时如何执行一些代码?

android - 更新收件箱样式通知,如 Gmail

android - 连接到移动热点的用户的详细信息

java - 奥利奥的打瞌睡模式

android - ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 什么都不做

android - 更改editText提示的字体

java - Android SQLite : Convert long to Date and back

android - 如何强制 Google 附近使用 WiFi Direct?

java - Android WifiP2PManager - 几个问题

android - Oreo 无限后台服务,如 Messenger 或 Instagram