Android - 创建应用程序级别片段

时间:2015-09-30 02:21:27

标签: android android-fragments android-lifecycle

对于我目前的项目,我将使用此SlidingUpPanel library

向上滑动面板将托管一个包含应用程序/全局级别信息的片段。该面板将在我的应用程序的每个活动中。这与Google Play音乐的工作方式非常相似。

我的问题是,在我的应用程序中保持向上滑动面板片段的最佳方法是什么?我看到自己以两种方式解决这个问题......

  1. 将片段存储在Application类中并在每个活动开始时加载它(不知何故,甚至不确定这是否可能)。
  2. 存储将在Application类和&中显示的数据。加载片段的新实例,传入持久化数据。
  3. 这两种方式中哪一种最好? 1.甚至可能吗?有这些方法的编码地雷吗?

2 个答案:

答案 0 :(得分:1)

存储片段以在整个应用程序生命周期中持续存在将是非常不正统的,主要是因为片段类应该能够遵循它的正常生命周期事件(在这种情况下,主要是onPause和onResume)而不是被卡在某处在应用程序类中。

通常的做法是每次显示片段时存储数据并加载它。如果要启用某种缓存或单例模式来访问数据,则最有可能是该片段可以访问的另一个对象,但不是片段中的成员。

有一个good video from google about leaking views,它简要介绍了与你在第1号弹药中提出的建议类似的陷阱。

答案 1 :(得分:1)

我认为您的应用程序的结构看起来应该是单个活动,其中包含该栏,然后主要内容为Fragment,您可以替换并使用addToBackStack打开保持使用后退按钮。否则,您将在解决方案2中使用大量重复代码(这意味着在错误等情况下需要进行大量重复工作,不能很好地维护),或使用解决方案1泄漏视图。

More info on providing a proper back implementation