繁体   English   中英

服务,唤醒锁

[英]Service, WakeLock

在浏览Stackoverflow中关于WakefulIntentService的问题和答案后,我有点困惑。 我只想获得一些关于这个主题的知识,以确保我的理解是正确的,如果我错了,请随时纠正我。

我构建了一个小应用程序,在那里我使用后台Service ,每当用户摇动手机时都会继续播放音乐。 我在设备锁定并且屏幕关闭后进行了测试,并且按预期工作。

  1. 我从这个论坛听到的消息,一旦设备进入睡眠状态,服务可能会关闭。 真的吗? 在我的情况下,它始终有效,我错过了什么?

  2. WakeFulIntentService什么需要? 我们什么时候需要使用WakefulIntentService

  3. 我尝试在Service运行一个计时器,虽然设备已被锁定,屏幕已关闭,我的计时器正在运行,我可以肯定地说。 因为我曾经在计时器跳闸时收到通知。

我从这个论坛听到的消息,一旦设备进入睡眠状态,服务可能会关闭。 真的吗?

是。

就我而言,它始终有效

然后设备上的其他东西会让设备无法入睡。 或许使用adb shell dumpsys power来查看WakeLocks的优秀内容。

WakeFulIntent服务需要什么? 我们什么时候需要使用WakefulIntentService?

如果用户处于非活动状态并且没有任何东西使设备保持唤醒,则设备可能会入睡。 WakeLock用于确保设备保持清醒状态。 对于事务类型的工作(例如,下载文件), WakefulIntentService组合了IntentServiceWakeLock ,以便在必要时(并且在必要时)保持设备清醒相对容易。

WakefulIntentService不适合与需要无限期运行的服务一起使用,例如音乐播放器。 对于那些,管理自己的WakeLock

我在一个应用程序中使用了以下代码。

确保您的服务很粘:

@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
    //this service will run until we stop it

    return START_STICKY;
}

我希望你的手机能够保持清醒,你可以使用下面的代码:

private WakeLock wl;

PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
    wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "whatever");
    wl.acquire();

不要忘记清单中的权限。

<uses-permission android:name="android.permission.WAKE_LOCK" />

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM