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将与框架为您提供什么相抵触.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...