gpt4 book ai didi

android - 服务可以访问 Activity 中的变量吗?

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

我有一个名为 MainActivity 的 Activity ,它启动一个名为 MainService 的服务。它还绑定(bind)了服务,因此 MainActivity 可以访问 MainService 中的方法和公共(public)变量。是否可以反过来做,即服务能够访问 Activity 的方法?

我希望以这种方式实现它,因为我在 MainActivity 中有一个变量,它是在 onResume() 时设置的,并且在第一次启动时,服务在 onResume() 运行时尚未启动,所以在那个时间点服务仍然为空。

最佳答案

这个答案假设有问题的服务在不同的进程中运行:

是的,这是可能的。一般的想法是,不仅你的 Activity绑定(bind) Remote Service通过一些 AIDL 定义的接口(interface),但它也实现了额外的 AIDL 接口(interface),即 Service意识到并将自己设置为远程 Service 的回调目标.

你必须有 2 个 AIDL 文件:第一个描述了 Service 的接口(interface)。 , 第二个描述了 Activity 的接口(interface).

这种方案的实现与 this answer 中描述的“远程服务回调”非常相似,尽管“回调”方法将不再是 void ,但返回您感兴趣的值。

设计注意事项:

以上方案将允许您从 Activity 中获取值,但我认为你不应该走这条路。从您的用例描述来看,您似乎只想将一些值传递给 Service什么时候Activity恢复。由于您的 Service无论如何都是绑定(bind)的,你可以简单地添加一个方法setSomeValue(int value)到其 AIDL 定义并从 onServiceConnected() 调用此方法回调。

关于android - 服务可以访问 Activity 中的变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38914269/

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