我有一个带有WiFi锁的Android前台服务,它充当另一个本地设备的Web服务。在打盹模式之前,获取WiFi锁并根据需要提供服务非常有效。
即使为我的应用关闭了电池优化功能,当屏幕关闭几分钟后,手机仍在查杀应用程序。
如何正确警告Android客户明确要求的服务是否在前台执行,并且他们此时不希望他们的手机进入睡眠状态?
编辑:此问题仍存在于Android 8.0(奥利奥)
中答案 0 :(得分:2)
你可以这样做:就像你打电话给你的服务一样,你可以添加一个代码来保持屏幕清醒。这样可以避免手机自动锁定。以下是文档中的示例代码段。
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:
中所述的有效方式使用警报管理器答案 1 :(得分:0)
尝试使用前台服务 - 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