我有一个活动,它是整个应用程序中使用的主要活动,它有许多变量。我有另外两个活动,我希望能够使用来自第一个活动的数据。
现在我知道我可以这样做:
GlobalState gs = (GlobalState) getApplication();
String s = gs.getTestMe();
然而,我想要分享很多变量,其中一些可能相当大,所以我不想像上面那样创建它们的副本。
是否有一种方法可以直接获取和更改变量而不使用get和set方法?我记得在谷歌开发网站上读过一篇文章,说不建议在Android上使用这种性能。
在活动之间共享数据有多种方式
1:使用Intent在活动之间传递数据
Intent intent=new Intent(this, desirableActivity.class);
intent.putExtra("KEY", "Value");
startActivity(intent)
2:使用静态关键字,将变量定义为公共静态,并在项目中使用任何位置
public static int sInitialValue=0;
在项目的任何地方使用classname.variableName;
3:使用数据库
但其过程较长,插入数据时必须使用查询,需要时使用游标迭代数据。但是如果不清理缓存就不会丢失数据。
4:使用共享首选项
比数据库简单多了。但是有一些限制,你不能保存ArrayList,List和自定义对象。
5:在application类中创建getter setter,并访问项目中的任何地方。
private String data;
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
这里设置和获取活动
((YourApplicationClass)getApplicationContext()).setData("abc");
String data=((YourApplicationClass)getApplicationContext()).getData();