在浏览了Stackoverflow中关于WakefulIntentService的问题和答案之后,我感到有点困惑。我只是想得到一些关于这个主题的知识,以确保我的理解是正确的,请随时纠正我,如果我错了。
我构建了一个小应用程序,在这个应用程序中,我使用的是一个后台Service,每当用户摇动手机时,它就会不停地播放音乐。我测试后,设备被锁定和屏幕关闭,它的工作,如预期的。
WakeFulIntentService的需求是什么?我们什么时候需要使用WakefulIntentServiceService中运行计时器,尽管设备被锁定,屏幕关闭,我的计时器也在运行,我可以肯定地说。因为我以前每次计时器旅行都会收到通知。发布于 2013-01-02 19:53:42
我从这个论坛上听到的消息是,当设备进入睡眠状态时,服务可能会关闭。这是真的吗?
是。
在我的例子中,它总是有效的
然后你的设备上的其他东西是阻止设备入睡。也许可以使用adb shell dumpsys power来查看哪些WakeLocks是优秀的。
WakeFulIntent服务的需求是什么?我们什么时候需要使用WakefulIntentService?
如果用户处于不活动状态,并且没有任何东西使设备保持清醒,则设备可能会入睡。WakeLock用于确保设备保持清醒。对于事务性工作(例如下载文件),WakefulIntentService将一个IntentService和一个WakeLock组合在一起,使设备在必要时保持清醒(并且只在必要的情况下)相对容易。
WakefulIntentService不适合用于需要无限期运行的服务,例如音乐播放器。对于这些,管理您自己的WakeLock。
发布于 2013-01-02 19:59:43
我在一个应用程序中使用了下面的代码。
确保您的服务是粘性的:
@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" />https://stackoverflow.com/questions/14128126
复制相似问题