相关疑难解决方法(0)

Intent.FLAG_ACTIVITY_CLEAR_TOP不会删除活动堆栈

我正在开发应用程序,我想在按钮点击关闭整个应用程序.我知道在android中我们不应该考虑关闭应用程序,因为android会自动执行此操作退出应用程序不满意吗?.但我想关闭我的申请.

所以我正在做什么来关闭应用程序是我使用Intent.FLAG_ACTIVITY_CLEAR_TOP标志来删除活动堆栈.

Intent intent = new Intent(Activity3.this, FinishActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
Run Code Online (Sandbox Code Playgroud)

FinishActivity.class我打电话的onCreate,this.finish()但应用程序没有关闭,之前的活动重新打开.

FinishActivity.class

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    this.finish();
}
Run Code Online (Sandbox Code Playgroud)

更新:

这是场景

MainActivity->Activity2->Activity3->FinishActivity
Run Code Online (Sandbox Code Playgroud)

Activity2是在完成活动后打开的.

我如何实现这一目标?任何想法和建议将不胜感激.

感谢和问候

android android-intent

19
推荐指数
3
解决办法
3万
查看次数

Intent.FLAG_ACTIVITY_CLEAR_TOP无效

我的申请流程:

登录 - >简介 - > UpdateProfile-> ChangePass

我的所有活动都扩展了FragmentActivity

当我在ChangePass活动中按下按钮时,我调用此代码:

Intent intent=new Intent(getApplicationContext(),LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

所以它应该启动LoginActivity,当我从LoginActivity按回来然后应该关闭...但是当我按下Login Activity中的后退按钮时,流程是:

ChangePass-> UpdateProfile->简介 - >登录

为什么我的后台堆栈没有清除?

注意:

我已经应用了所有这些解决方案但没有工作: 1.link 2.link

android back-stack

5
推荐指数
1
解决办法
6212
查看次数

Android FLAG_ACTIVITY_CLEAR_TOP无法正常工作?

我真的不明白所有这些标志是如何工作的,因为我完全按照文档所说的那样,并没有解决我的问题.我的活动是这样启动:(第一)活动A - >活动B - >(第二)活动A.如果我按回按钮,它会返回活动B - >活动A - >退出应用程序.现在我想要从活动B中说明的第二个活动A,当按回来时,它将立即跳过活动B和第一个活动A,以及退出应用程序.这是代码:

从A到B:

TabActivityGroupAbs parentActivity = (TabActivityGroupAbs) ((Activity) ctx).getParent();
detailIntent = new Intent(parentActivity, B.class);
parentActivity.startChildActivity("BFromA", detailIntent);
Run Code Online (Sandbox Code Playgroud)

从B到A:

TabActivityGroupAbs parentActivity = (TabActivityGroupAbs) ((Activity) ctx).getParent();
detailIntent = new Intent(parentActivity, A.class);
detailIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
detailIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
parentActivity.startChildActivity("AFromB", detailIntent);
Run Code Online (Sandbox Code Playgroud)

从B到A,我添加了标志FLAG_ACTIVITY_CLEAR_TOP.但它没有清楚任何事情.当我按下时,它仍然转到活动B,然后再转到A. 我做错了什么?

似乎没有任何标志可以正常工作.从A到B,我把:

detailIntent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
Run Code Online (Sandbox Code Playgroud)

它应该阻止B被放到活动堆栈中.但事实并非如此.从第二个活动A开始,按下后它仍然会回到B.

现在我应该怎么做才能退出应用程序而不是从第二个活动A返回到B.

编辑:我忘了提.从B到A,如果我调用finish()来杀死活动B,那么从第二个活动A,当按回来时,它会回到第一个活动A.为什么活动A在这里有2个实例,虽然我设置了FLAG_ACTIVITY_CLEAR_TOP?真奇怪.

flags android android-intent android-activity

2
推荐指数
2
解决办法
5613
查看次数