我想创建一个包含对象的数据的ArrayList(就像地址和属性列表一样(非常复杂)),我在想:如何让一个对象可访问(以及可编辑)由所有活动,而不仅仅是一个它instanciated?在Android中创建一个可被所有Activites访问的对象
基本上这:
- 创建活动2阵列中的活动1次
- 访问同一阵列和3
- ???
- 利润。
我想创建一个包含对象的数据的ArrayList(就像地址和属性列表一样(非常复杂)),我在想:如何让一个对象可访问(以及可编辑)由所有活动,而不仅仅是一个它instanciated?在Android中创建一个可被所有Activites访问的对象
基本上这:
最简单的方法做,这是通过创建一个单身访问类的实例。这是一种只能创建一次的对象,如果您尝试再次访问它,它将返回对象的现有实例。 在里面你可以容纳你的数组。
public class Singleton {
private static final Singleton instance = new Singleton();
// Private constructor prevents instantiation from other classes
private Singleton() {
}
public static Singleton getInstance() {
return instance;
}
}
你应该让静态和任何其他活动访问.....
您可以扩展应用程序类。并在那里添加你的数组。
您可以使用此命令
MyApplication appContext = (MyApplication)getApplicationContext();
那么你可以创建一个常量类,并声明您ArrayList的一个静态变量。
1)
Class ConstantCodes{
public static ArrayList<MyClass> list = new ArrayList<MyClass>;
}
来自世界各地要按只是ConstantCodes.list
2.这将是访问),您可以通过应用程序类这样
class Globalclass extends Application {
private String myState;
public String getState(){
return myState;
}
public void setState(String s){
myState = s;
}
}
class TempActivity extends Activity {
@Override
public void onCreate(Bundle b){
...
MyApp appState = ((MyApp)getApplicationContext());
String state = appState.getState();
...
}
}
如何扩展您的类关于使用静态关键字?
public static SomeClass someObject
该启动对对象
1-在您的活性1,声明阵列中公共静态
public static ArrayList<HashMap<String, String>> myArray = new ArrayList<HashMap<String, String>>();
2-在你活性2,活动3,等访问您的ArrayList
Activity1.myArray
感谢您的回答!这也是最有效的方式吗?单源有效的资源是多少? –
Singleton的坏处:由于没有对象的实际所有者,garbagecollector永远不会将其从内存中移除,所以只要应用程序处于活动状态(直到onDestroy),它就会占用该内存。但是,我们也可以认为你不必一直创建新的对象,这使你更快的速度和更少的内存使用。 – Nic