在一个 Android 活动中,我正在填充一个在该活动中声明为静态的 ArrayList。此数据结构稍后在应用程序执行期间由其他活动访问,如下所示:
类名.data_structure_name;
我的问题是这样做是否安全,或者Android是否可以清除内存结构或类似的东西?
在一个 Android 活动中,我正在填充一个在该活动中声明为静态的 ArrayList。此数据结构稍后在应用程序执行期间由其他活动访问,如下所示:
类名.data_structure_name;
我的问题是这样做是否安全,或者Android是否可以清除内存结构或类似的东西?
是的,Android 可以按照此处Activity
的说明处理您的。
如果一个活动被暂停或停止,系统可以通过要求它完成(调用它的 finish() 方法)或简单地终止它的进程来将它从内存中删除。Activity 再次打开时(完成或杀死后),必须全部创建
但这是Activity
举例。如果您是静态的,那么除非从 Dalvik VM 卸载该类(我个人从未见过这种情况),ArrayList
否则它不会被删除。Activity
无论如何,恕我直言,这不是一个好的设计(我过去曾使用过)。我建议你使用一个单独的类来存储你的 static ArrayList
。请注意多线程和 使用Singletons
.
如果您需要不同的活动访问您的 ArrayList,我认为您应该将它放在一个单独的类中 - 而不是 Activity 类。
如果您想知道,数据不会在不同的进程中持续存在,因此您可能只会遇到错误。IE,类的静态成员不是持久存储。
但是,如果您以后的这些活动都在同一个流程中,那么您将能够像您指定的那样访问它。
这个设计有几个问题。
我猜你从某个来源获取数据并将其放入数组列表中。如果您不需要整个数组列表,只需将值作为包内传递。
如果您在后续活动中需要整个数组列表,请按照您最初获得的方式重新填充数组列表。
静态访问不适合 OOP 设计。除了以下打印日志标签的情况外,我不会在我的 Android 应用程序的任何地方使用静态。
public static final String TAG="MY_TAG";
即使是辛格尔顿也值得商榷。