Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从实用程序类获取活动_Android_Android Activity_Lifecycle - Fatal编程技术网

Android 从实用程序类获取活动

Android 从实用程序类获取活动,android,android-activity,lifecycle,Android,Android Activity,Lifecycle,我的应用程序中有一个常见的问题,我将功能提取到处理此功能的类中,而不是其他。问题是,我经常需要一个活动的实例来实现大部分功能,如读取文件、访问数据库等,因此我必须将当前活动传递给实用程序,这使得代码很难看 现在,我正在考虑建立一个包含对我的“开始”活动的引用的单例,然后将这个单例注入到我的utillites中。但是,这是一个问题,但是,我不控制某个活动是否被删除或仍然处于活动状态,Android会这样做。所以我的活动可能不够活跃,无法再使用了 因此,总而言之,我不相信存储对某个活动的引用是安全的

我的应用程序中有一个常见的问题,我将功能提取到处理此功能的类中,而不是其他。问题是,我经常需要一个活动的实例来实现大部分功能,如读取文件、访问数据库等,因此我必须将当前活动传递给实用程序,这使得代码很难看

现在,我正在考虑建立一个包含对我的“开始”活动的引用的单例,然后将这个单例注入到我的utillites中。但是,这是一个问题,但是,我不控制某个活动是否被删除或仍然处于活动状态,Android会这样做。所以我的活动可能不够活跃,无法再使用了

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

提前谢谢
罗兰

你是对的,许多安卓操作需要一个
活动
,或者(通常)只是一个
上下文
。如果您的实用程序类没有在
上下文的生命周期之外保留引用,那么您应该不会有问题

我会避开提及你的“开始”活动的单身人士,因为你的应用程序的第一个活动可能会被破坏,即使后续活动是活动的和可见的


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

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