我有一个 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/