我的应用程序中存在一个常见问题,即我将功能提取到处理此功能的类中,而不是其他任何内容。问题是我经常需要一个Activity的实例来实现大部分功能,比如读取文件,访问数据库等等,所以我必须将当前活动传递给实用程序并使代码变得丑陋。
现在我正在研究设置一个单例,它包含对我的“开始”活动的引用,然后将这个Singleton注入我的utillites。但是,这就是,但是,我无法控制活动是否被删除或仍然有效,Android确实如此。因此,我的活动可能还不够活跃,无法继续使用。
因此,总而言之,我不相信存储对活动的引用是安全的,并且我不想在每次调用时传递当前活动。解决办法是什么。我是偏执狂吗? : - )
提前致谢 罗兰
答案 0 :(得分:3)
不存储对活动的引用。您可以使用应用程序上下文:只有一个,只要您的应用程序处于活动状态,它就可以保证可用。为了便于访问,您可能需要定义Application
类并向其添加getInstance()
方法。这种方法的问题在于,并非所有需要上下文的操作都可以使用应用程序上下文来执行。任何与视图相关的内容都可能会失败。
答案 1 :(得分:0)
许多Android操作需要Activity
或(更常见)只需Context
,这是正确的。如果您的实用程序类没有超出Context
生命周期的引用,那么您应该没问题。
我会回避提及你的'开始'活动的单身人士,因为你的应用的第一个活动可能会被销毁,即使后续活动是活跃且可见的。
另一种方法可能是实现您自己的抽象类(例如BaseActivity
)实现或包装您的所有其他活动继承的实用程序类的功能,而不是直接Activity
。通过这种方式,您可以使管道远离主要活动的逻辑。