最近更新

退出APP時清空棧裡所有activity

退出APP時清空棧裡所有activity

一、Intent方式

  • 輔助activity,退出時指明跳轉到改Activity,啟動後立即結束
/**
 - 退出app時清空棧裡的所有activity,輔助activity
 - Created by Administrator on 2016/9/10.
 */
public class AssistActivity extends Activity{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        finish();
    }
}
           
  • Intent具體寫法
Intent intent = new Intent(context, AssistActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent);
           

二、用一個類來緩存已存在的activity,用list集合來儲存還在運作的activity

/**
 * 核心工具類
 * Created by sks on 2016/4/9.
 */
public class CoreUtils {

    //Activity清單
    public static ArrayList<Activity> activityList = new ArrayList<Activity>();

    /**
     * 添加Activity到清單中
     * @param activity
     */
    public static void addAppActivity(Activity activity){
        if(!activityList.contains(activity)){
            activityList.add(activity);
        }
    }

    /**
     * 從清單移除Activity
     * @param activity
     */
    public static void removeAppActivity(Activity activity){
        if(activityList.contains(activity)){
            activityList.remove(activity);
        }
    }

    /**
     * 退出應用程式
     */
    public static void exitApp(Context context){

        L.d("銷毀Activity size:" + activityList.size());
        for (Activity ac : activityList) {
            if(!ac.isFinishing()){
                ac.finish();
            }
        }
        activityList.clear();
        //殺掉程序
         android.os.Process.killProcess(android.os.Process.myPid());
    }

    /**
     * 清空List集合
     * @param list
     */
    public static void clearList(List<?> list){
        if(list!=null){
            list.clear();
        }
    }

}