如何逐一开始相同的活动

时间:2017-05-11 05:29:01

标签: android android-activity

我的应用中没有典型的情况。我有主要活动,然后我打开活动A,从活动A我可以打开活动B,从活动B我可以打开活动A等。 在这种情况下我查看了Android监视器,每次应用程序内存都增加了。例如,应用程序在150个活动和90mb内存中崩溃。在此内存清除并打开上一个活动(A或B)后,用户可以返回。

我可以阻止此问题吗?例如,使用特殊意图标志或其他内容。非常感谢。

注意用户可以返回

3 个答案:

答案 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