Android 開發 啟動activity並且將前面activity全部清空


方法一:

 Intent intent = new Intent(A.this,B.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent);
startActivity的時候傳遞FLAG_ACTIVITY_CLEAR_TASK這個標志,那么這個標志將會清除之前所有已經打開的activity.然后將會變成另外一個空棧的root,然后其他的Activitys就都被關閉了.這個方法必須跟着{@link #FLAG_ACTIVITY_NEW_TASK}一起使用.
一定要和FLAG_ACTIVITY_NEW_TASK一起使用!
 

方法二:

 

            Intent intent = new Intent(context,PLoginActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
            context.startActivity(intent);    

 

注意這里使用的是addFlags(); 二者的區別是setFlags();會清空原有的Flags設置新的Flags,而addFlags則是添加新的Flags

方法三:

/**
 *@content:活動結束管理類
 *@time:2019-1-29
 *@build:
 */

public class ActivityFinishUtil {
    private static List<Activity> activityList = new ArrayList<>();

    public static void addActivity(Activity activity){
        activityList.add(activity);
    }

    public static void removeActivity(Activity activity){
        activityList.remove(activity);
    }

    public static void finishOtherAllActivity(Activity activity){
        for (Activity item : activityList){
            if (item == activity){
                continue;
            }
            item.finish();
        }
    }

    public static void finishAllActivity(){
        for (Activity item : activityList){
            item.finish();
        }
    }

}

此方法只需要在你的基礎Activity的onCreateonDestroy添加對應方法

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(getLayout());
        ActivityFinishUtil.addActivity(this);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        ActivityFinishUtil.removeActivity(this);
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM