如果不创建线程,是否需要获取WakeLock?

| 我正在创建一个“ 0”,它将被设置为开始使用“ 1”(使用“ 2”)。我在
onStartCommand
方法中进行所有处理,主要是因为: 不需要很长时间(从磁盘读取小文件,也许通过
NotificationManager
推送通知) 如果需要,我可以轻松地将其设置为在单独的过程中开始。 在这种情况下,我仍然需要获取WakeLock吗? 据我所知,只有在创建单独的线程时才必须获得WakeLock(因为操作系统会将主线程视为空闲并进入睡眠状态)。这是真的吗?还是我仍然有被操作系统打断……打...睡的风险?     
已邀请:
        当心-当前您不应将唤醒警报直接传递给服务。交付给服务不同于交付给接收者。警报管理器无法知道服务何时完成执行,因此即使在调用onStartCommand()之前,也无法确保它为您持有唤醒锁。 因此,为此,您需要有一个将警报发送到的接收器,在该接收器中获取唤醒锁,然后调用startService()以使服务执行并确保不释放该警报。唤醒锁,直到服务完成。是的,这很糟糕。 :(我认为Mark或某人可能对此有帮助代码。 简化此操作的一种方法是,仅关注服务已运行时会发生什么。可以在onReceiveIntent()中使用Context.peekService()来获取当前正在运行的服务,并且可以在接收器中立即调用它,以在按住唤醒锁的同时执行关键代码。此外,如果您使用的是在同一过程中运行它们的常见情况,则可以使用服务文档中显示的相同技巧直接调用它,而无需编写帮助文件。     

要回复问题请先登录注册