I hope that we can pass data between android application components
通过以下方式。
1.我们可以使用intent对象传递数据,
2.我们可以实现可序列化,可分割的接口并使用intent
传递对象3.我们可以通过扩展Application类来创建一个新类,从任何地方访问全局成员
android应用程序,
4.sharedpreference,
5.sqlite。
是否还有其他机制在Android应用程序组件之间发送数据?
答案 0 :(得分:2)
另一个选择是创建ApplicationPool。
按照以下步骤操作: - 启动ApplicationPool: -
ApplicationPool pool = ApplicationPool.getInstance();
修改详细信息页面上的数据并添加到池
pool.put("key", object);
从池中获取列表页面上的修改数据
Object object = (Object) pool.get("key");
重要说明: - 获取数据后通知列表视图或gridview
ApplicationPool类文件
public class ApplicationPool {
private static ApplicationPool instance;
private HashMap<String, Object> pool;
private ApplicationPool() {
pool = new HashMap<String, Object>();
}
public static ApplicationPool getInstance() {
if (instance == null) {
instance = new ApplicationPool();
}
return instance;
}
public void clearCollectionPool() {
pool.clear();
}
public void put(String key, Object value) {
pool.put(key, value);
}
public Object get(String key) {
return pool.get(key);
}
public void removeObject(String key) {
if ((pool.get(key)) != null)
pool.remove(key);
}
}
答案 1 :(得分:2)
另一种方法是使用静态元素,它是:
虽然在OOP中使用静态变量是值得商榷的,但它们引入了全局状态,因此也是在活动之间实现数据共享的一种方式。
答案 2 :(得分:1)
1)WeakReferences的HashMap,例如:
public class DataHolder {
Map<String, WeakReference<Object>> data = new HashMap<String, WeakReference<Object>>();
void save(String id, Object object) {
data.put(id, new WeakReference<Object>(object));
}
Object retrieve(String id) {
WeakReference<Object> objectWeakReference = data.get(id);
return objectWeakReference.get();
}
}
在启动活动之前:
DataHolder.getInstance().save(someId, someObject);
从已发布的活动开始:
DataHolder.getInstance().retrieve(someId);
2)或奇怪的方法:在服务器O_o上存储数据