Activity之间的数据传输的4种方法
- Intent传递数据
这是一种官方推荐的传输方式。比如,你在A这个Activity上拿到一坨用户输入的文本信息,兴高采烈的想把它放到B这个Activity上展示并发送,一个很可行的方式,是通过Intent的putExtra接口,把用户输入的那些字符信息,按照key/value的形式放进Intent,传输到B这个Activity上。
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
intent.putExtra("flag", flag);
intent.putExtra("data",data);
startActivity(intent);
Intent 还可以进行数组和对象的传递,上述代码设计一个Data类,这个类是可序列化的、也就是实现了java.io.Serializable接口的类。
public class Data implements Serializable {
private int age;
private String name;
private String address;
}
使用Bundle:
Intent intent = new Intent(ThreeActivity.this, FourActivity.class);
Bundle bundle = new Bundle();
bundle.putString("name", "Lin");
bundle.putInt("age", 13);
intent.putExtras(bundle);
startActivity(intent);
Bundle不能传递过大的数据,最好小于0.5M
2、使用静态变量传递数据
此方法不建议使用因为Davlik虚拟机的垃圾回收器并不可靠,如果过多的使用静态变量会大量的占用手机内存,使用场景:多个页面都使用此参数,数据量较小
3、使用剪切板传递数据
ClipboardManager manager = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);
String name = "jack";
manager.setText(name)
4、通过全局Application类共享数据
MyApp extends Application{
String var;
public void setVar(String var){
this.var = var;
}
}
在Manifest.xml中标签中 android:name=”.MyApp” ,其它Activity中调用getApplication()获取该全局对象