gpt4 book ai didi

android - 当应用程序从低内存中返回时系统重新创建 fragment

转载 作者:行者123 更新时间:2023-11-30 03:04:19 26 4
gpt4 key购买 nike

我的应用有一个 Activity,它有一个 ViewPager。 ViewPager 中有几个 fragment 。

有一个错误。当我点击“主页”隐藏我的应用程序,并启动许多其他应用程序时,这些应用程序是内存 killer ,而不是我点击图标回调我的应用程序, fragment 乱序。

我调试了很多天,最后发现,当应用程序从低内存中恢复时,它会从头开始重新启动 Activity ,我的意思是它从 Activity 的静态初始代码开始到 onCreate()。但是,系统也自动为我创建了 fragment ,这不是我的代码,也没有初始化。

我知道系统想要做什么。它想帮助应用程序恢复内存不足之前的状态。当内存不足时,系统会杀死我的 fragment 。

我有两个问题:

(1) 当系统为我重新创建 fragment 时,我如何接收?我的意思是,我有很多指向旧 fragment 的数据结构,我怎样才能将这个指针更改为新 fragment ?我找到了一种方法,当自动重新创建的 fragment 到达 onAttach() 时,用这个 fragment 的地址替换 Activity 中的旧指针值。就像这样:Viewpager loose fragment connection on low memory kill .如果这是官方方式和最佳方式?

(2) 在某些情况下我真的不需要恢复低内存之前的状态。我想重新启动应用程序以获得清晰的应用程序。那么,是否有一个选项可以防止系统为我重新创建 fragment 或其他状态?

最佳答案

(1) 您需要在覆盖onSaveInstanceState 中保存所有您想要保留的数据。然后在 onCreate 方法中将此状态返回给您。

(2) 如果您的应用程序只有一个 Activity ,您可以从 onStop 覆盖调用 finish。然后,每次将应用发送到后台时,您的应用都会重新启动。

关于android - 当应用程序从低内存中返回时系统重新创建 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22062896/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com