简体   繁体   English

Android Intent活动逻辑?

[英]Android Intent Activity Logic?

learning about intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 了解有关intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

LEGENDS: 传说:

x--> finish(); x-> finish(); after startActivity(Intent); 在startActivity(Intent)之后;

<--x--> finish(); <-x-> finish(); after startActivity(Intent); 在startActivity(Intent)之后; AND if back button is pressed finish() this and created a startActivity(Intent) going back 并且如果按下后退按钮finish(),则创建了一个startActivity(Intent)返回

--> startActivity(Intent) not finished -> startActivity(Intent)尚未完成

------------------------ ------------------------

Here's my diagram: 这是我的图:

A x--> B <--x--> C <--x--> D --> E x--> F A x-> B <-x-> C <-x-> D- > E x-> F

on F Activity, there is a RETRY AND EXIT BUTTON. 在F活动上,有一个重试和退出按钮。 If retryButton is pressed, finish F Activity which will result back to D Activity since it is not finished. 如果按下retryButton,则完成F活动,由于尚未完成,将返回D活动。

PROBLEM 问题

If exitButton is pressed, finish ActivityF and NEW intent.startActivity(ActivityC); 如果按下exitButton,则完成ActivityF和NEW intent.startActivity(ActivityC);。

Because ActivityC is a new Intent, it becomes the TOP ACTIVITY and FLAG_ACTIVITY_CLEAR_TOP won't do anything. 由于ActivityC是新的Intent,因此它成为TOP ACTIVITY,而FLAG_ACTIVITY_CLEAR_TOP将不执行任何操作。

The thing is I also want to finish ActivityD so that when I reach ActivityB and press the back button it ask me if I want to quit the program, if yes then finish() ActivityB... 事情是我也想完成ActivityD,以便当我到达ActivityB并按返回按钮时,它会问我是否要退出程序,如果是,那么请完成()ActivityB ...

when I do that, however, ActivityD is still on. 但是,当我这样做时,ActivityD仍处于打开状态。 Because of this ActivityD has a potential of overstacking and might be bad for the memory( I suppose?) 因此,ActivityD可能会出现堆栈过多的情况,并且可能对内存不利(我想是吗?)

Anyway to close ActivityD? 无论如何要关闭ActivityD?

Here is the ans. 这是ans。 I have the same situation... try this solution. 我有相同的情况...尝试此解决方案。 This will clear all your top activities from stack. 这将从堆栈中清除所有重要活动。

Intent i = new Intent(mContext,LoginActivity_IDY.class);
                    i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK |Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NO_ANIMATION  );
                    overridePendingTransition(0, R.anim.slide_right);
                    startActivity(i);
                    finish();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM