新数据在活动中检测配置更改



假设,我有一个活动,它执行网络查询,接收数据并对该数据执行某些操作,我如何在不使用livemodel,持久演示者,DB或共享首选项的情况下保存配置更改的数据。一种变体实际上是带有捆绑包的新 frgment,在配置更改后,活动将使用数据恢复片段,还有什么建议吗?

按照下面的答案,可能有用,不要使用密钥和捆绑,因为捆绑 LSO 持有密钥。以下是在 Kotlin 中执行此操作的方法

object DataHolder {
private val data = HashMap<String, Any>()
fun setData(key: String, data: Any) {
this.data[key] = data
}
fun getData(key: String): Any? {
return data[key]
}
fun removeData(key: String) {
data.remove(key)
}

}

这取决于您要保留数据多长时间。如果希望它只是当前应用会话的持久性,则可以使用单一实例。下面是一个使用Bundle的示例,但您可以使用任何保存您关心的数据的对象。下面是一个带有映射的示例,可让您使用唯一的字符串键设置不同的持久数据条目。

public class MyDataHolder  {
private static MyDataHolder instance = new MyDataHolder();
private final HashMap<String,Bundle> data = new HashMap<>();
private MyDataHolder() {};
public static MyDataHolder getInstance() {
return instance;
}
public void setData(String key, Bundle data) {
this.data.put(key,data)
}
public Bundle getData(String key) {
return data.getOrDefault(key, null);
}
}

然后在您的活动中保存一些数据

MyDataHolder holder = MyDataHolder.getInstance();
holder.setData("ActivityB",data);

并获取数据(例如,以onCreate为单位(

MyDataHolder holder = MyDataHolder.getInstance();
Bundle data = holder.getData("ActivityB");
if( data != null ) {
// use saved config
}
else {
// use default config
}

如果需要它在当前应用会话之后保留,或者即使应用被终止也保留,则需要将其保存到本地文件或网络位置。这可以是一个内置方法(DB,SharedPreferences(,但你不想使用这些方法,所以你必须编写自己的方法来读取和写入数据。

最新更新