android - 在应用程序类中绑定(bind) Android 服务是个好主意吗?

标签 android variables static android-service foreground

我有一个 Android 前台服务,其中包含 session 映射(键、 session )。在我的 Activity 中,我收到一个 key ,我想从服务中获取 session 。因此,我将我的每个 Activity 都绑定(bind)到该服务,我可以要求该服务使用我的 key 获取我的 session 。但是这样做意味着我必须等待 onServiceConnected() 来获取 session 。

在我的应用程序类中绑定(bind)一次服务并将我的服务放在一个静态变量中是个好主意,然后我的所有 Activity 都可以直接在它们的 onCreate() 中访问该服务而不是等待onServiceConnected() 的调用?但是确定我的静态变量会一直存在吗?你知道Android在需要资源时是否可以删除那个静态变量吗?我想应用程序实例永远不会被删除,对吗?因此,将我的服务保存在静态变量中可能是个好主意。你怎么看?

最佳答案

你正在尝试做的事情听起来像是 React 中某种调度程序的肮脏实现,我很想自己做,但因为时间不够而没有这样做。请让我们知道您的结果。

我建议使用 Messager,文档中有相关信息,因此不需要静态 https://developer.android.com/guide/components/bound-services.html?hl=en-419

是的,Android 操作系统可以清理任何东西,它可以终止服务,它可以使变量为空。大多数情况下这不会发生,因为它只会对前台应用程序进行优先级排序。因此,如果用户打开 10 个应用程序并且您处于后台,它可能会。这对我来说似乎没问题。有时我也遇到过变量在 Fragment 中变为 null,但后来我缩小了变量范围并修复了它。

此外,如果您正在考虑这个问题,请尝试使用 EventBus 库或使用 ReactJava,也许 Realm ORM 甚至 Firebase 可以帮助您。

关于android - 在应用程序类中绑定(bind) Android 服务是个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45636985/

相关文章:

c - 为什么此语句会在 gcc 中产生链接器错误?

java - 调用jsp中的非静态变量和静态函数

android - 我如何关闭新 android 版本的锁定屏幕?

java - 停止媒体播放器

java - 如何从 URI 字符串中以整数形式获取图像位置

python - 更改列表的元素与更改列表本身

android - 没有连接适配器;跳过布局 : RecyclerView & Adapter

javascript - 临时替换局部范围内的全局变量

java - 以 HH :MM (Not time) 的形式存储数值

c - 静态链接库。 c编译