嘿我正在制作一个测验应用程序,我需要将一个最多100个“问题”对象的ArrayList从一个活动传递到另一个活动。 Question对象有大约6个参数 - 都是非常小的字符串。我正在寻找方法来做到这一点,其中一个提到的是在一个类中将它声明为公共静态变量,然后在另一个类中引用它。我想知道以下事项:
我可以在使用之前“实例化”ArrayList,还是只需声明变量?如:
ArrayList<Question> QuestionBank = new ArrayList<Question>();
或
ArrayList<Question> QuestionBank;
如果我在一个活动中声明这个变量,当我在另一个活动中时它是如何保持可用的?宣布的活动是否继续运行?
答案 0 :(得分:4)
数目:
您需要在“使用”if之前对其进行实例化。 “使用”我的意思是呼叫方法。在实例化它,第一次或第二次活动无关紧要。
静态字段也称为类字段,因为它们是通过类而不是通过对象实例访问的。结果是,在静态字段的情况下,您始终只有一个实例,例如MyClass.someField
在整个应用中都可用,并且只有一个。
它使用内存(RAM)而不是文件中的数据(使用闪存)。但是,在某些时候你需要将它放在内存中,所以它在任何情况下都使用这个内存。
是的,如果你只是暂时需要它,你可以在不再需要它之后将字段设置为null
并释放内存(最终,当gc运行时)。
Intent.setExtra()
/ Intent.getXXXExtra()
Application
的类,它是整个应用程序生命周期中的单实例和活动答案 1 :(得分:0)
我认为您不想将静态数据从一个活动读取到另一个活动,这是一个无疑会导致问题/副作用的解决方案。最好将活动尽可能地分开。
我认为最佳解决方案(如上所述)是为了Questions
班Parcable
。然后在Activity Intent.setExtra
方法中设置数据。当您的其他活动开始时,您会阅读Intent
中的问题,然后您的所有数据都会在活动的生命周期中很好地适应,并且您的活动可以通过这种方式重复使用。