首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >新的数据处理活动中的配置更改

新的数据处理活动中的配置更改
EN

Stack Overflow用户
提问于 2018-07-06 20:17:40
回答 1查看 21关注 0票数 0

比如说,我有一个做网络查询、接收数据和处理数据的活动,如果我不使用livemodel、持久化的主持人、DB或共享首选项,我将如何处理配置更改上的数据。一个变体实际上是一个带有包的新的分块,在配置更改之后,活动将用数据恢复片段,还有更多的建议吗?

按照下面的答案,可能是有用的,不要使用键和包,因为包lso有一个键。这里是你如何在科特林做到这一点

代码语言:javascript
复制
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)
}

}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-07 02:20:24

这取决于您想要保存多久的数据。如果您希望它对于当前的应用程序会话是持久的,您可以使用单例。下面是一个使用Bundle的示例,但是您可以使用任何保存您所关心的数据的对象。下面是一个具有映射的示例,它允许您用唯一的字符串键设置不同的持久数据条目。

代码语言:javascript
复制
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);
    }
}

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

代码语言:javascript
复制
MyDataHolder holder = MyDataHolder.getInstance();
holder.setData("ActivityB",data);

并获取数据(例如,在onCreate中)

代码语言:javascript
复制
MyDataHolder holder = MyDataHolder.getInstance();
Bundle data = holder.getData("ActivityB");
if( data != null ) {
    // use saved config
}
else {
    // use default config
}

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51217090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档