我的应用中没有典型的情况。我有主要活动,然后我打开活动A,从活动A我可以打开活动B,从活动B我可以打开活动A等。 在这种情况下我查看了Android监视器,每次应用程序内存都增加了。例如,应用程序在150个活动和90mb内存中崩溃。在此内存清除并打开上一个活动(A或B)后,用户可以返回。
我可以阻止此问题吗?例如,使用特殊意图标志或其他内容。非常感谢。
注意用户可以返回
答案 0 :(得分:1)
启动Intent.FLAG_ACTIVITY_REORDER_TO_FRONT
时,您可以使用Activity
。这会将此Activity
的现有实例(如果已存在于堆栈中)移动到前端,而不创建该Activity
的新实例。如果这样做,请注意第二次不会在实例上调用onCreate()
。相反,将调用onNewIntent()
来传递用于重新排序的Intent
,然后onResume()
。
然而,这不会解决您的BACK问题。如果您真的希望您的用户能够返回150次并以完全相反的顺序显示活动堆栈,则需要单独解决此问题。为此,您可以通过在public static
变量中维护自己的对象堆栈来创建堆栈中有150个活动的错觉。堆栈中的每个对象都应包含足够的数据,以便您重新创建(或重新排序)相应的Activity
包含相应的数据。
答案 1 :(得分:1)
在 AndroidManifest.xml 文件列表中使用 singleTop 作为<ion-header>
<ion-navbar>
<ion-title>Intro</ion-title>
</ion-navbar>
</ion-header>
<ion-content padding>
</ion-content>
<ion-slides pager>
<ion-slide style="background-image: url(/../../www/img/fondo.png)">
<h2>Slide 1</h2>
</ion-slide>
<ion-slide style="background-color: mediumpurple">
<h2>Slide 2</h2>
</ion-slide>
<ion-slide style="background-color: mediumpurple">
<h2>Slide 3</h2>
</ion-slide>
</ion-slides>
标记的属性:
singleTop 可以根据需要创建活动实例。只要 区别在于是否已存在具有相同的Activity实例 在调用者任务的堆栈顶部键入,不会有任何 创建了新的Activity,而不是将Intent发送给现有的 活动实例通过 onNewIntent()方法。
关于Understand Android Activity's launchMode: standard, singleTop, singleTask and singleInstance
的讨论很好答案 2 :(得分:0)
finish()来杀死(销毁)一个Activity实例。 完成:enter link description here
您还可以检查生命周期:enter link description here