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

我有一个Android的前台服务与WiFi锁,充当另一个本地设备的Web服务。 在打盹模式之前,根据需要获取WiFi锁和服务是非常有效的。

即使我的应用closures了电池优化function,当屏幕closures几分钟时,手机仍然会closures应用程序。

我如何正确地提醒Android,客户请求的服务在前台正在执行,他们不希望他们的电话在这个时候睡觉?

编辑:这个问题仍然存在于Android 8.0(奥利奥)

Solutions Collecting From Web of "Android 7.0(Nougat)打盹模式停止Web服务"

你可以这样做:就像你打电话给你的服务,你可以添加一个代码来保持屏幕清醒。 这将避免手机自动locking。 以下是文档中的示例代码片段。

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); } 

这种方法的优点是,不像唤醒锁,它不需要特殊的权限,平台正确地pipe理用户在应用程序之间移动,而不需要你的应用程序担心释放未使用的资源。 另外,您可以按照本文所述的有效方式使用报警pipe理器:

尝试使用前台服务 – https://developer.android.com/guide/components/services.html#Foreground

前台服务是用户主动意识到的一种服务,当内存不足时,系统不会杀死它。 前台服务必须提供状态栏的通知,该通知位于“正在进行”标题下。 这意味着,除非服务被停止或从前台移除,否则通知不能被解除。

您也可以尝试FULL_WAKE_LOCK或SCREEN_DIM_WAKE_LOCK,看看它是否阻止您的设备进入睡眠模式.refer – https://developer.android.com/reference/android/os/PowerManager.html#FULL_WAKE_LOCK