服务中的线程-Android应用

时间:2018-06-20 20:04:42

标签: java android multithreading service background

如果我想在后台服务(扩展服务)中创建一个单独的线程,当退出应用程序(单击“主页”按钮)或电话进入睡眠状态时,该线程是否仍可以运行?我想使用Service的行为,但是我的后台服务太重而无法在主线程上运行,并且导致UI跳帧。

1 个答案:

答案 0 :(得分:1)

  

退出应用程序后,线程仍将能够运行(单击   主页按钮)或电话进入睡眠状态?

该线程可以在后台运行,也可以在睡眠模式下运行,但主要问题是是否允许服务运行。

在Android O之前,您可以无限制地在后台无限运行Service

但是从Android O开始,您的应用进入后台运行X分钟(根据我的观察,大约是1-2分钟),后台服务的所有限制都会生效,并且您的服务将停止,就像您调用了{ {1}}

如果您打算这样做:

  • 要无限期运行该线程,则应避免这样做,因为它会影响设备的电池寿命,并且操作系统限制不允许这样做。您可以使用WorkManager定期执行任务,这将遵循打respect模式。
  • 要确保应用启动的一次作业要执行到完成,您可以创建ForegroundService。前景服务为Service.stopSelf(),并带有通知。您可以考虑使用一个音乐播放器应用程序,即使您关闭该应用程序并通过通知对其进行控制,也可以播放音乐。

    您可以遵循此SO,其中介绍了在Android O和早期版本中启动ForegroundService的方法