【问题标题】:How long an variable keep its value when app is in background?当应用程序处于后台时,变量保持其值多长时间?
【发布时间】: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

标签: android android-lifecycle


【解决方案1】:

1.) 运行活动意味着 onCreate 召回,所有字段都会更新。

2.) 正如我所说,当重新创建一个活动时,如果你想存储任何东西,它的所有成员都会更新,使用 sharedpreferences 或数据库。

如果有更多未解决的问题,请在评论中更新我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多