【发布时间】:2019-12-09 16:29:00
【问题描述】:
在我的 android 应用程序中,MainActivity 启动。然后用户打开具有一个片段的 SecondActivity。在与片段进行一些交互后,用户通过按下主页按钮将应用程序发送到后台,但没有关闭应用程序。 2 小时后,用户再次从后台运行应用并重新创建片段,但生命周期不起作用!(onStart() 或 onResume() 不起作用。)
我像这样保存一些价值来捆绑:
@Override
public void onSaveInstanceState(@NonNull Bundle outState) {
outState.putBoolean("myFlag", true);
super.onSaveInstanceState(outState);
}
现在,我有两个问题:
第一:从后台再次运行 Activity 需要多长时间?
二:重新创建activity后,为什么booleans之类的变量没有再次初始化?
谢谢。
【问题讨论】:
-
你必须假设变量会立即消失。无法确定它会存在多长时间,因为您不知道设备的内存是什么。可以想象,他们的后台进程限制为一个。始终,始终将所有重要数据保存在数据库条目中。
-
你的应用程序如果长时间在后台会被android系统销毁以清除内存。如果您的应用被 android 杀死,您需要将这些变量保存在已保存的实例状态中以从相同状态恢复。
-
@JohnLord 谢谢。但是为什么再次重新创建应用时 onStart() 或 onResume() 不起作用?
-
@xlu 但应用程序没有销毁,只是重新创建活动,没有调用 onResume 或 onStart。
-
我的 ViewModel 可能有同样的问题,发现此视频很有帮助并解决了我的问题。它也可能对您有所帮助youtube.com/watch?v=sLCn27DceRA&t=808s