在网上搜这个问题的时候看到了有一篇文章说有五种方法:
1.基于消息的通信机制 Intent ---boudle ,extra
数据类型有限,比如遇到不可序列化的数据Bitmap,InputStream, 或者LinkList链表等等数据类型就不太好用。
2. 利用static静态数据,public static成员变量;
3.基于外部存储的传输, File/Preference/ Sqlite ,如果要针对第三方应用需要Content Provider
4.基于IPC的通信机制context 与Service之间的传输,如Activity与Service之间的通信,定义AIDL接口文件。
5. 基于Application Context
真心觉得第五个方法挺好用的,就和java web里的session一样,但是说实话还是session好用。大家说这是更为优雅的实现方式。
只要多建一个类就行。比如我想在多个activity中共享已经登陆的用户名,我就建了一个Username类,名字很普通,具体代码如下:
package com.example.cardemo1;
import android.app.Application;
public class Username extends Application{
private String username;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
然后,我只要在别的activity中写入以下两条语句就可以使用username
Username uname = (Username) getApplicationContext();
String name = uname.getUsername();
是不是很方便?