Android退出App

Android退出app

我是用在用户协议未同意时退出app的

关闭所有的Activity

  1. 新建一个AndroidCollector文件,定义一个LinkedList;
  2. 定义addActivity()方法,用于添加Activity到集合中;
  3. 定义removeActivity()方法,用于删除Activity;
  4. 定义finishAll()方法,用于关闭集合中的所有Activity;
  5. BaseActivity()中重写onCreate和onDestroy;
  6. 在需要的地方调用finishAll();

具体代码如下:

ActivityCollector

/*
关闭所有的Activity
 */
public class ActivityCollector {
    public static LinkedList<Activity> activities = new LinkedList<Activity>();
    /*
    添加Activity
     */
    public static void addActivity(Activity activity){
        activities.add(activity);
    }
    /*
    删除Activity
     */
    public static void removeActivity(Activity activity){
        activities.remove(activity);
    }
    //关闭所有的Activity
    public static void finishAll(){
        for (Activity activity:activities){
            if (!activity.isFinishing()){
                activity.finish();
            }
        }
    }
}

BaseActivity

public class BaseActivity extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ActivityCollector.addActivity(this);
    }

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

完全退出app

上面那个只是关闭所有的Activity,但生成的线程之类的没有退出,所以调用了ActivityCollector.finishAll())之后再加上:

		//关闭所有的Activity;
		ActivityCollector.finishAll();  
		//完全退出App
        ActivityManager activityMgr = (ActivityManager) context  
                .getSystemService(Context.ACTIVITY_SERVICE);  
        activityMgr.killBackgroundProcesses(context.getPackageName());  
        System.exit(0);