微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.jb51.cc/android/310661.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐