gpt4 book ai didi

android - 绑定(bind)服务总是在前台吗?

转载 作者:太空宇宙 更新时间:2023-11-03 13:43:27 25 4
gpt4 key购买 nike

我需要为我的应用程序启动一个前台服务,这样即使应用程序在后台运行,它也不会被杀死。这是一个方法,startForeground

我还需要与服务进行通信,所以我认为最简单的选择是绑定(bind)到它(我计划让它在同一个进程中运行,以便能够将返回的 IBinder 转换为我的类,并且只是调用方法)。但是,我在任何地方都找不到有关绑定(bind)的前台服务的信息。

阅读文档和教程后,我发现 bindService 的标志之一是 https://developer.android.com/reference/android/content/Context.html#BIND_NOT_FOREGROUND以防止服务获得前台优先级。

这是否意味着默认情况下每个 bound service 也是一个 foreground 服务,并且它需要通知之类的(文档从未真正提到它所以我猜不是)?

如果我的应用使用前台服务,该应用是否可以在后台被终止?

最佳答案

好了,说说服务吧。服务可以启动绑定(bind)以及两者。所以你实际上可以制作 startService() 并在它之后制作 startForeground(),但是当你要 bindService() 时,你可以删除通知并使服务不在前台(对于这种情况似乎是标志 BIND_NOT_FOREGROUND)。绑定(bind)服务本身不是前台(它们具有绑定(bind)到服务的组件的优先级)。据我所知,要进行前台绑定(bind)服务,您不能只调用 startForeground()(它不会工作,状态栏中不会添加任何通知),所以唯一的方法是让 startService()onStartCommand() 处理只会执行 startForeground() 的操作。

所以默认绑定(bind)服务不是前台,你不需要通知。您的应用程序可以随时被系统或用户在应用程序设置中终止(强制停止),但如果您想让系统知道您的服务对用户和应用程序非常重要,您可以将其置于前台,这样系统就不会触及它直到系统有足够的内存供您的进程使用。

关于android - 绑定(bind)服务总是在前台吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46762066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com