何时使用和不使用android应用程序类?

何时使用和不使用android应用程序类?,android,android-context,Android,Android Context,我正在考虑使用android类来存储应用程序中其他(片段)活动共享的临时状态和公共代码 我想获得更多反馈,了解这是否是一个适合以下人员的好地方: 共享常量,如ID、pref键名称等 全局变量(即setter/getter),反映当前UI状态、导航、选定片段,以及通常不需要持久化的临时数据 当某些条件被触发时,用于持久化数据的钩子 在首选项更改后更新UI 提供从应用程序中任何位置访问上下文的简便方法,包括getApplication()不可用的代码,例如通过静态getter,如MyApp.getA

我正在考虑使用android类来存储应用程序中其他(片段)活动共享的临时状态和公共代码

我想获得更多反馈,了解这是否是一个适合以下人员的好地方:

  • 共享常量,如ID、pref键名称等
  • 全局变量(即setter/getter),反映当前UI状态、导航、选定片段,以及通常不需要持久化的临时数据
  • 当某些条件被触发时,用于持久化数据的钩子
  • 在首选项更改后更新UI
  • 提供从应用程序中任何位置访问上下文的简便方法,包括
    getApplication()
    不可用的代码,例如通过静态getter,如
    MyApp.getApp()
  • 通用方法需要全局状态变量的可见性,并且将变得过于繁琐而无法转移到专用类
  • 在活动课上,还有什么是合适的/有用的/方便的?什么不是一个好主意,保留在它和什么将是最好的选择?最后,您发现什么应用程序最适合在您的应用程序中使用

    共享常量,如ID、pref键名称等

    我通常为此创建一个名为C的常量文件,因为它更易于阅读
    C.SHARED\u PREFS
    更容易理解
    Application.SHARED\u PREFS
    IMHO

    反映当前UI状态的全局变量(即setter/getter), 导航、所选片段,以及通常用于 不需要持久化

    在它所关注的活动或组件中(例如,活动的UI状态可能应该存储在icicle包中,或者存储在该活动的实例中),这样做会更好

    当某些条件被触发时,用于持久化数据的钩子

    这应该没问题

    在首选项更改后更新UI

    同样,我觉得在各个部分中这样做会更好

    提供了从应用程序中任何位置访问上下文的简便方法, 包括getApplication()不可用的代码,例如通过 静态getter,如MyApp.getApp()

    这会起作用,但要小心内存泄漏。当从活动或服务或其他方式调用方法时,通常应将上下文作为参数传入。内存泄漏的可能性更小

    需要全局状态变量可见性的常用方法 这将变得太麻烦,无法转移到专门的 上课


    我觉得最好是使用专门的类,因为当你的应用在功能和大小上有所增长时,这将变得很难维护。

    这可能是可以连接某些挂钩的地方


    例如,如果您使用崩溃报告库,您只需要使用应用程序类,因为这是连接ACRA的地方。这迫使我开始使用这个类;我以前从来都不需要这个

    平展
    -1
    ,因为这篇文章有一大堆好问题,也会让其他用户受益。:)相关的“活动”实际上是一个ViewPager,它包含多个FragmentActivity页面,因此需要保持状态并允许片段之间的通信。在这种情况下,使用事件imho将是过分的。