Android 当应用程序从低内存中返回时,系统重新创建片段

Android 当应用程序从低内存中返回时,系统重新创建片段,android,memory,android-viewpager,fragment,Android,Memory,Android Viewpager,Fragment,我的应用程序有一个带有ViewPager的活动。ViewPager中有几个片段 有一只虫子。当我点击“主页”隐藏我的应用程序,并启动许多其他应用程序,这些应用程序是内存杀手,而我点击图标调回我的应用程序时,这些片段出现了问题 我调试了很多天,最后发现,当应用程序从内存不足的情况下返回时,它会从头开始重新启动活动,我的意思是从活动的静态初始代码开始,直到onCreate()。但是,系统也会自动为我创建片段,这不是由我的代码完成的,并且缺少初始化 我知道系统想要做什么。它希望帮助应用程序在内存不足之

我的应用程序有一个带有ViewPager的活动。ViewPager中有几个片段

有一只虫子。当我点击“主页”隐藏我的应用程序,并启动许多其他应用程序,这些应用程序是内存杀手,而我点击图标调回我的应用程序时,这些片段出现了问题

我调试了很多天,最后发现,当应用程序从内存不足的情况下返回时,它会从头开始重新启动活动,我的意思是从活动的静态初始代码开始,直到onCreate()。但是,系统也会自动为我创建片段,这不是由我的代码完成的,并且缺少初始化

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

我有两个问题:

(1) 当系统为我重新创建片段时,我如何接收它?我的意思是,我有很多指向旧片段的数据结构,我如何才能将这些指针更改为新片段?我找到了一种方法,当自动重新创建的片段到达onAttach()时,用该片段的地址替换活动中的旧指针值。就像这样:。如果这是官方的方式,也是最好的方式

(2) 在某些情况下,我真的不需要在内存不足之前恢复状态。我希望重新启动应用程序有一个清晰的应用程序。因此,如果有一个选项可以阻止系统为我重新创建片段或其他状态?

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

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