android - 网络通信中的 Activity 和 fragment 职责(robospice)

标签 android http android-activity android-networking robospice

我正在使用 Robospice 库 创建应用程序。这是处理互联网连接的绝佳选择,因为库的核心是基于 Android 服务的,所以我们的连接与 Activity 生命周期无关。
我们正在创建我们的请求并使用 spice 管理器执行它们,而 spice 管理器又在每个 Activity (基本 Activity 继承)中实例化,如果有更好的方法来执行此操作,我不认为在这里放置管理对象的创建是正确的方法,请告诉我。

public class BaseActivity extends AppCompatActivity implements ActivityController, SpiceManagerProvider {
    private SpiceManager mSpiceManager = new SpiceManager(MyRobospiceService.class);

我一直在 fragment 和 Activity 中准确地在我需要它们的地方创建请求(robospice 请求)。但是现在我想了一下。也许最好只在 Activity 中分离请求处理。并且只是监听按钮点击或任何来自 Activity fragment 的回调方法或其他一些组件间通信。而不是在 Activity 中提出请求,处理它。但在这种情况下,如果我需要在 fragment 中取回数据,我必须将它从 Activity 发送回 fragment 。所以看起来有很多多余的通信。

总而言之,我不想从更有经验的开发人员那里获得关于职责分离的建议,我应该只在一个组件(如 Activity )中处理请求,还是我可以在任何需要的地方发出和处理请求。
提前谢谢大家。

最佳答案

为每个 Activity 使用单个 SpiceManager 并在 Fragment 之间共享它是我过去成功完成的事情。不幸的是,在这种情况下,您必须检查每个响应监听器的 Activity 是否仍然恢复。 具体来说,您需要确保不会更新已停止或已损坏的 UI。

参见 related FAQ question更多细节。

那里的第二段提到了另一种方法,即每个 Fragment 都有一个 SpiceManager,因此这对您来说也是一个可行的选择。我们在创建 SpiceManager 时注意到了一些开销(这只会在有很多 Fragment 时造成伤害),因此放弃了它以供我们使用。

关于android - 网络通信中的 Activity 和 fragment 职责(robospice),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31475765/

相关文章:

android - 在 Android Studio 0.8.9 上导入 actionbarsherlock

javascript - 如何从 AngularJS 指令调用 Android 方法?

http - 我无法从 curl 命令返回 get 200 响应

javascript - 股票市场 API Node.JS

android - 无法运行 Android SDK 管理器

android - 9patch 边框黑色像素可见

facebook - <script src "#fbml=1"> 中的 ="http://connect.facebook.net/en_US/all.js#xfbml=1"在做什么? URL 没有哈希,但没有它,它将无法工作

java - 似乎无法以编程方式或在 XML 中删除操作栏

java - Android OnTouchListener 不起作用

android - 我的 Android 项目构建失败并且从未执行该项目?