如何解决应用清除数据时如何从启动中重新启动应用
当我在最近的应用程序中保留我的应用程序约30分钟以上,并且30分钟后,我从最近的应用程序中打开了同一应用程序。当我试图在一段时间后打开同一应用程序时,它会打开相同的活动或片段,但数据已清除,因此它实际上重新启动了相同的片段或活动。我无法在Android 7.0+设备中的App中将数据保留在Fragment中,但在Android 6设备下仍可以正常工作。
解决方法
这是Android中的常见问题。一种方法是检查您的数据是否存在。像这样:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
myModel = new MyModel();
//...
}
@Override
protected void onResume() {
super.onResume();
if (myModel == null) { //This means your activity is resumed after a period of time.
finishAffinity();
Intent i = new Intent(this,MainActivity.class);
startActivity(i);
}
}
这将起作用,但是,这不是解决此类问题的确切方法。顺便说一下,您需要考虑一些问题,例如调用finishAffinity()
时整个应用程序会发生什么。更好的解决方案在于savedInstanceState
。您可以将“活动/片段”的状态保存为“销毁”,并在重新创建时恢复:
@Override
public void onSaveInstanceState(Bundle outState) {
outState.putString("data","data to be saved");
super.onSaveInstanceState(outState);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
String data = savedInstanceState.getString("data");
//Use the data to restore your Fragmetn/Activity
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。