首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >服务,WakeLock

服务,WakeLock
EN

Stack Overflow用户
提问于 2013-01-02 19:42:10
回答 2查看 15.8K关注 0票数 16

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

我构建了一个小应用程序,在这个应用程序中,我使用的是一个后台Service,每当用户摇动手机时,它就会不停地播放音乐。我测试后,设备被锁定和屏幕关闭,它的工作,如预期的。

  1. 我从this forum那里听到的消息是,当设备进入睡眠状态时,该服务可能会关闭。这是真的吗?在我的情况下,它总是起作用的,我是不是遗漏了什么?
  2. WakeFulIntentService的需求是什么?我们什么时候需要使用WakefulIntentService
  3. 我试着在Service中运行计时器,尽管设备被锁定,屏幕关闭,我的计时器也在运行,我可以肯定地说。因为我以前每次计时器旅行都会收到通知。
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-02 19:53:42

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

是。

在我的例子中,它总是有效的

然后你的设备上的其他东西是阻止设备入睡。也许可以使用adb shell dumpsys power来查看哪些WakeLocks是优秀的。

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

如果用户处于不活动状态,并且没有任何东西使设备保持清醒,则设备可能会入睡。WakeLock用于确保设备保持清醒。对于事务性工作(例如下载文件),WakefulIntentService将一个IntentService和一个WakeLock组合在一起,使设备在必要时保持清醒(并且只在必要的情况下)相对容易。

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

票数 19
EN

Stack Overflow用户

发布于 2013-01-02 19:59:43

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

确保您的服务是粘性的:

代码语言:javascript
复制
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
    //this service will run until we stop it

    return START_STICKY;
}

我想让你的手机一直保持清醒,你可以使用下面的代码:

代码语言:javascript
复制
private WakeLock wl;

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

不要忘记清单中的权限。

代码语言:javascript
复制
<uses-permission android:name="android.permission.WAKE_LOCK" />
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14128126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档