我怎样才能避免设备进入睡眠模式?,甚至使用唤醒锁

How I can avoid the device from going to sleep mode?, even using a wakelock

我的 Android 应用程序上有一项服务,当我的应用程序中的用户会话处于活动状态时,该服务每 20 秒在我的服务器中发布一次。

如果我的设备连接到电源,这 运行 在几天内没问题,但如果设备断开连接且未使用(屏幕关闭),服务似乎停止但几分钟后开始运行 并继续 运行 几个小时。

在服务中,我使用唤醒锁来避免设备进入睡眠模式。

抱歉我的英语太基础了

因为当您的 activity 被终止时,您的服务也被终止。如果您希望您的服务仍然 运行,请不要使用 Context.bindService() 来启动它,而是使用 Context.startService()。有关详细信息,请查看此 link How to start your service and to know all about services http://developer.android.com/reference/android/app/Service.html

问题是我在 Android 版本 6 的设备上进行测试,为此我们必须使用 setAlarmClock 来唤醒设备。

        Intent intent = new Intent(context, MyWakefulBroadcastReceiver.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);

        AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);

        long triggerAtMillis = System.currentTimeMillis() + 20 * 1000;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            AlarmManager.AlarmClockInfo alarmClockInfo = new AlarmManager.AlarmClockInfo(triggerAtMillis, pendingIntent);
            alarmManager.setAlarmClock(alarmClockInfo, pendingIntent);
        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            alarmManager.setExact(android.app.AlarmManager.RTC_WAKEUP, triggerAtMillis, pendingIntent);
        } else {
            alarmManager.set(android.app.AlarmManager.RTC_WAKEUP, triggerAtMillis, pendingIntent);
        }