【问题标题】:How to know when IntentService is paused如何知道 IntentService 何时暂停
【发布时间】:2013-11-05 02:04:02
【问题描述】:

我有一个进程内 IntentService,它可以在磁盘上转换和缓存 Activity 使用的图像,它可能需要 5 分钟才能运行(取决于设备)。同时,Activity 继续运行并向用户 UI 显示低分辨率版本的图像。

我的问题是,如果用户将 Activity 发送到后台,则服务会继续运行,但在某些时候它似乎会暂停,因为进度停止并且在重新启动 IntentService 之前不会继续。我已经截获了 IntentService onDestroy() 但注意到它仅在 IntentService 完全完成时才被调用。

如果需要,Android 可以暂停我的 IntentService,但有什么方法可以知道它是否已暂停?我想知道为了 1)取消(或更改)通知消息并执行任何清理。 提前致谢。

【问题讨论】:

    标签: java android-service


    【解决方案1】:

    暂停可能是由于 CPU 进入睡眠模式,在屏幕变黑几秒钟后。您的服务需要获取WakeLock 以保持CPU 运行(并在服务完成之前立即释放它,但不是在onDestroy() 方法上,它不能保证每次都运行)。但是,没有任何警告信号表明 CPU 将进入睡眠模式,也没有广播事件或类似的东西。

    【讨论】:

    • 如果我不使用 WakeLock,当 CPU 恢复“生命”时,暂停的 IntentService 会发生什么?是恢复了吗?并从中断的地方继续?
    • 是的,它已恢复并从中断处继续。
    猜你喜欢
    • 1970-01-01
    • 2011-02-17
    • 2015-08-19
    • 2017-02-06
    • 2014-04-05
    • 1970-01-01
    • 2015-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多