android - 在 Android Oreo 中将绑定(bind)服务排除在后台执行限制之外的原因

标签 android android-service android-service-binding android-8.0-oreo

在 Android Oreo 中,为什么仍然允许绑定(bind)服务,而不允许 (Started Services & IntentServices)。

假设我有一个绑定(bind)服务,我在 Activity 的 oncreate() 方法中绑定(bind)该服务,并在 Activity 的 ondestroy() 方法中取消绑定(bind)它。现在,当用户进入此 Activity 并按下主页按钮时,我的应用程序将无限期地进入后台,此绑定(bind)服务将使用我的资源认为开发人员想从 Oreo 中删除,所以您不认为保留绑定(bind)服务的原因是什么,如果它们也会浪费内存资源。

最佳答案

In Android Oreo why bound services still allowed whereas (Started Services & IntentServices) are not allowed.

所有这些服务都是允许的。但是,启动的非前台服务只能运行约 1 分钟。

now for the indefinite amount of time this bound service will use resources

Android 会在一段时间后终止你的后台进程,与之前没有什么不同。纯粹的绑定(bind)服务不会提高流程的重要性;只有启动的服务才可以。

但是,绑定(bind)服务进程的重要性由服务自身的进程和任何绑定(bind)客户端的进程决定。这就是为什么绑定(bind)服务不会直接受到 Android 8.0 更改的影响 - 服务的生命周期更多地由客户端控制,而不是由服务本身控制。因此,在服务被核心操作系统进程(例如,NotificationListenerService)绑定(bind)的情况下,系统有效地控制该服务需要存在的时间。在您的情况下,由于客户端和服务位于同一个应用程序和同一个进程中,因此您的进程可以在后台正常终止。

关于android - 在 Android Oreo 中将绑定(bind)服务排除在后台执行限制之外的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46256441/

相关文章:

java - Android:RecyclerView 不触发 onClick 事件

java - 在服务类中使用 MediaPlayer...?

Android - 开机启动服务

android - 媒体播放器服务安卓

android - 在 onDestroy 方法中重新启动服务

android - android中有定时器功能吗? (不是 java.util.Timer)

java - EditText setError 不显示默认错误图标

android - ListView 中的 ImageView

android - 服务不具约束力

Android Mosby MVI 绑定(bind)到演示者中的服务