开发者社区> 问答> 正文

活动/流程生命周期-何时将数据保存到磁盘或从磁盘加载数据

我的应用程序由A和B这两个活动组成。我正在考虑以下步骤序列:

活动A已启动。 A启动B [A暂停,B正在运行]。 B启动地图意图[A和B现在都已暂停]。 现在,用户正在使用地图应用程序,系统决定它需要更多的内存。该系统能杀死只有一个我对内存的活动,还是会一直杀所有的“活动过程在这种情况下”?

这两个活动共享一些静态数据,例如:


class Data {
    public static String mName;
    public void save() {
      // write to file: mName;
    }
    public void load() {
      // mName = read from file;
    }
}

ActivityA.mTextView.setText(Data.mName);
ActivityB.mListView.addText(Data.mName);

因此,当我的应用程序中的任何活动被调用onSaveInstanceBundleSate()时,我都会调用Data.save()将其写入磁盘。现在的问题是,在Activity的onCreate()方法中,我是否应该简单地检查一下Data.mName == null,如果是,则假定Activity从终止状态返回,然后尝试再次从磁盘还原?考虑到活动A可能仍然存在或尚不活跃等,我不清楚何时应该执行此恢复操作。而且-如果活动A仍然存在但B从终止状态恢复,我不希望破坏状态,

谢谢

谢谢

展开
收起
Puppet 2020-01-23 13:16:12 408 0
1 条回答
写回答
取消 提交回答
  • 最好的解决方案可能是将静态数据移至服务。这样,当android关闭服务时(而不是在Android关闭使用该数据的任何单个活动时),可以保存和还原数据。

    如果不使用服务(或者替代性地使用内容提供程序,甚至不重写应用程序,尽管看上去似乎不赞成这样做),则必须自己管理该生命周期,正如您所看到的那样,这很棘手。

    2020-01-23 13:16:19
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
微信SQLite数据库损坏恢复实践 立即下载
用户态高速块缓存方案 立即下载
低代码开发师(初级)实战教程 立即下载