0
点赞
收藏
分享

微信扫一扫

如何关闭连续打开的Activity

三分梦_0bc3 2022-08-04 阅读 51


假设有这样一个场景:首页》AActivity 》BActivity 》CActivity 》DActivity 》首页。
如何把这过程中的Activity关闭呢?我现在想到两个方法。

方法1(推荐):

在DActivity使用如下代码返回首页:
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Intent.FLAG_ACTIVITY_CLEAR_TOP会把首页上面的所有Activity全部清除掉,把要打开的Activity置于栈顶。

Intent intent = new Intent(DActivity.this,MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

方法2:

在Application类里用列表记录打开过的activity:

public class MyApplication extends Application {
/**
* 己打开的activity集合
*/
private static List<Activity> activities = new ArrayList<Activity>();

public static void setActivities(Activity activity) {
if(activities != null){
activities.add(activity);
}
}

/**
* 释放界面
*/
public static void finishActivities() {
for (Activity activity : activities) {
if (activity != null) {
activity.finish();
}
}
activities.clear();
}

/**
* 根据Activity来销毁
* @param activity
*/
public static void popActivity(Activity activity){
if(activity == null) return;
Activity act = null;
for(int i=0;i<activities.size(); i++){
act = activities.get(i);
if(act !=null && act == activity){
activity.finish();
activities.remove(act);
act.finish();
act = null;
return;
}
}
}
}

在DActivity返回首页时,把所有activity清除掉:

MyApplication.finishActivities();
Intent intent = new Intent(DActivity.this,MainActivity.class);
startActivity(intent);

​​demo​​


举报

相关推荐

0 条评论