2011-08-21 74 views
2

我的应用程序中有一个常见问题,我将功能提取到处理此功能的类中,而没有其他功能。问题是我经常需要一个Activity的实例来完成这个功能,比如读取文件,访问数据库等等,所以我必须将当前的活动传递给该实用程序,并且使代码变得难看。从实用程序类获取活动

现在我正在研究设置一个持有对“开始” - 活动的引用的单例,然后将此单例注入到我的utillites中。但是,这是但是,我不能控制一个活动是否被移除或仍然活跃,Android可以。所以我的活动可能还不够活力而已。

因此,总而言之,我不确定将参考存储到活动中是否安全,我不希望在每次调用时都传递当前活动。解决办法是什么。我是偏执狂吗?提前 罗兰

回答

3

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

0

:-)

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

我会回避引用您的“开始”活动的单例,因为即使后续活动处于活动状态并且可见,您的应用的第一个活动可能会被破坏。

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