Android退出app
我是用在用户协议未同意时退出app的
关闭所有的Activity
- 新建一个AndroidCollector文件,定义一个LinkedList;
- 定义addActivity()方法,用于添加Activity到集合中;
- 定义removeActivity()方法,用于删除Activity;
- 定义finishAll()方法,用于关闭集合中的所有Activity;
- BaseActivity()中重写onCreate和onDestroy;
- 在需要的地方调用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);