【问题标题】:Is wakelock static and if so, how do I manage multiple services/wakelocks in one application?唤醒锁是静态的吗?如果是,我如何在一个应用程序中管理多个服务/唤醒锁?
【发布时间】:2013-05-17 01:02:42
【问题描述】:

我有 3 个服务做不同的事情并且都需要唤醒锁。

在执行结束时,我想释放唤醒锁,但是,我担心释放唤醒锁的给定服务会破坏不同服务的行为。所以,我想象的场景是:

服务 A 获取唤醒锁并开始做某事

服务 B 获取唤醒锁并开始做某事

服务 A 完成并释放唤醒锁

此时服务 B 会发生什么?

所以,我的基本问题是:

a) 这是需要担心的事情吗,还是 Android 会在幕后自动为我管理(我的假设是没有)?

b) 确保在任何服务未完成时唤醒锁仍然存在,或获取不会相互破坏的单独唤醒锁的最佳方法是什么?

【问题讨论】:

    标签: android service wakelock


    【解决方案1】:

    如果任何服务未完成,确保唤醒锁仍然存在的最佳方法是什么

    WakeLock 上致电setReferenceCounted(true)。默认情况下已经设置好了,但如果需要,您可以再次调用它。

    【讨论】:

    • 啊...整个机制的引用计数部分是我不清楚的,显然可以完美地满足我的目的,而无需显式调用冗余布尔设置器。谢谢,一如既往。
    • @Dr.Dredel:是的。通常,您需要引用计数的WakeLocks,这就是默认情况下启用的原因。在WakefulIntentService 中,我真的真的很想要一个引用计数的WakeLock,所以我继续调用setter,以防Google 更改默认值。据推测,在某些情况下您可能不希望引用计数 WakeLock,尽管我想不出一个例子来摆脱我相当秃顶的头顶。
    猜你喜欢
    • 1970-01-01
    • 2012-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多