android – 对于服务的startActivityForResult的模拟

前端之家收集整理的这篇文章主要介绍了android – 对于服务的startActivityForResult的模拟前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
尽管 similar question was asked,我有不同的情况:
我的应用程序主要由后台服务组成.我想开始外部活动并获得结果.

我看到几个选项:

>创建虚拟活动并继续引用它来使用它的startActivityForResult.我们知道这消耗了很多的记忆.
>使用广播意图而不是Android的结果基础设施:请求客户端活动在关闭之前广播其结果.这种打破这个想法,而不是那么高效.
>直接使用Instrumentation – 尝试将代码从startActivityForResult复制到我的服务中.
>使用服务接口 – 序列化并将AIDL连接添加到启动活动的Intent.在这种情况下,活动应该是call Service directly而不是提供结果.

第三种方法对我来说更接近于Android,但我不知道是否可以做 – 服务没有其Instrumentation,默认实现似乎总是返回null.

也许你有其他想法?

解决方法

我认为选项2是android中最惯用的方法.从Activity中使用startActivityForResult是一个同步/阻塞调用,即父活动等待,直到孩子完成后才会执行任何操作.当从服务工作并与您主要进行异步/非阻塞呼叫的活动进行交互时,即服务调出一些待完成的工作,然后等待信号告诉它可以继续.

如果您使用android local service pattern,那么您可以让您的活动获得服务的参考,然后在执行其工作后调用特定功能.尝试您的选项3将与框架为您提供什么相抵触.

原文链接:https://www.f2er.com/android/310661.html

猜你在找的Android相关文章