在我的应用程序中,在输入活动时,将启动后台任务以从服务器获取数据,并且数据将显示在片段中。有3种方法可以做到。
1。在Activity.onCreate()
中启动任务,并将数据保存为Acitivity字段,然后创建片段。 Fragment获取要从Activity显示的数据的引用,该实现FragmentListener
接口。所有数据都保存在Acitivity.onSavedInstance()
中。 Fragment本身不保留数据,仅用于显示。
2。在Activity.onCreate()
中启动任务,但将数据保留为Fragment字段。所有数据都保存在Fragment.onSavedInstance()
中。
3。所有相关工作都在Fragment中完成。数据获取的代码也放在Fragment中。所以在Activity中,只调用Fragment的创建。在需要时以这种方式将Fragment放入不同的Activity中很容易。
我想知道哪种方式是设计应用程序的最佳方式,考虑到未来的解耦,模块化和扩展规则。
答案 0 :(得分:0)
我会推荐这种设计模式:
http://www.androiddesignpatterns.com/2013/04/retaining-objects-across-config-changes.html
答案 1 :(得分:0)
我会将它保留在Fragmant中,只要Fragmant是我将使用它的唯一地方。
但是,假设您有两个Fragmants并且它们都使用数据,那么逻辑上要做的就是将数据保存在一个公共位置;即活动。
答案 2 :(得分:0)
听起来你可以将所有代码完全包含在片段中,除了最初启动片段之外,甚至不需要Activity知道它存在或关心它。似乎将片段中的所有内容保持在最佳状态。然后你就可以拥有那个片段并将它重用于你想要的任何活动,这是良好解耦的目标(即使你没有这个目标)。