从实用程序类获取活动

时间:2011-08-21 10:56:13

标签: android android-activity lifecycle

我的应用程序中存在一个常见问题,即我将功能提取到处理此功能的类中,而不是其他任何内容。问题是我经常需要一个Activity的实例来实现大部分功能,比如读取文件,访问数据库等等,所以我必须将当前活动传递给实用程序并使代码变得丑陋。

现在我正在研究设置一个单例,它包含对我的“开始”活动的引用,然后将这个Singleton注入我的utillites。但是,这就是,但是,我无法控制活动是否被删除或仍然有效,Android确实如此。因此,我的活动可能还不够活跃,无法继续使用。

因此,总而言之,我不相信存储对活动的引用是安全的,并且我不想在每次调用时传递当前活动。解决办法是什么。我是偏执狂吗? : - )

提前致谢 罗兰

2 个答案:

答案 0 :(得分:3)

不存储对活动的引用。您可以使用应用程序上下文:只有一个,只要您的应用程序处于活动状态,它就可以保证可用。为了便于访问,您可能需要定义Application类并向其添加getInstance()方法。这种方法的问题在于,并非所有需要上下文的操作都可以使用应用程序上下文来执行。任何与视图相关的内容都可能会失败。

答案 1 :(得分:0)

许多Android操作需要Activity或(更常见)只需Context,这是正确的。如果您的实用程序类没有超出Context生命周期的引用,那么您应该没问题。

我会回避提及你的'开始'活动的单身人士,因为你的应用的第一个活动可能会被销毁,即使后续活动是活跃且可见的。

另一种方法可能是实现您自己的抽象类(例如BaseActivity)实现或包装您的所有其他活动继承的实用程序类的功能,而不是直接Activity。通过这种方式,您可以使管道远离主要活动的逻辑。