我的应用程序由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从终止状态恢复,我不希望破坏状态,
谢谢
谢谢
最好的解决方案可能是将静态数据移至服务。这样,当android关闭服务时(而不是在Android关闭使用该数据的任何单个活动时),可以保存和还原数据。
如果不使用服务(或者替代性地使用内容提供程序,甚至不重写应用程序,尽管看上去似乎不赞成这样做),则必须自己管理该生命周期,正如您所看到的那样,这很棘手。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。