| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- package com.guiying.common.base;
- import android.app.Activity;
- import android.app.ActivityManager;
- import android.app.Application;
- import android.content.Context;
- import android.util.Log;
- import com.guiying.common.utils.Utils;
- import com.orhanobut.logger.LogLevel;
- import com.orhanobut.logger.Logger;
- import java.util.Stack;
- /**
- * 要想使用BaseApplication,必须在组件中实现自己的Application,并且继承BaseApplication;
- * 组件中实现的Application必须在debug包中的AndroidManifest.xml中注册,否则无法使用;
- * 组件的Application需置于java/debug文件夹中,不得放于主代码;
- * 组件中获取Context的方法必须为:Utils.getContext(),不允许其他写法;
- * BaseApplication主要用来管理全局Activity;
- *
- * @author 2016/12/2 17:02
- * @version V1.0.0
- * @name BaseApplication
- */
- public class BaseApplication extends Application {
- private static BaseApplication sInstance;
- private Stack<Activity> activityStack;
- public static BaseApplication getIns() {
- return sInstance;
- }
- @Override
- public void onCreate() {
- super.onCreate();
- sInstance = this;
- Utils.init(this);
- if (Utils.isAppDebug()) {
- //只有debug模式才会打印日志
- Logger.init("Petrel").logLevel(LogLevel.FULL);
- } else {
- Logger.init("Petrel").logLevel(LogLevel.NONE);
- }
- }
- /**
- * 添加指定Activity到堆栈
- */
- public void addActivity(Activity activity) {
- if (activityStack == null) {
- activityStack = new Stack<>();
- }
- activityStack.add(activity);
- }
- /**
- * 获取当前Activity
- */
- public Activity currentActivity() {
- return activityStack.lastElement();
- }
- /**
- * 结束当前Activity
- */
- public void finishActivity() {
- Activity activity = activityStack.lastElement();
- finishActivity(activity);
- }
- /**
- * 结束指定的Activity
- */
- public void finishActivity(Activity activity) {
- if (activity != null) {
- activityStack.remove(activity);
- activity.finish();
- activity = null;
- }
- }
- /**
- * 结束指定Class的Activity
- */
- public void finishActivity(Class<?> cls) {
- for (Activity activity : activityStack) {
- if (activity.getClass().equals(cls)) {
- finishActivity(activity);
- return;
- }
- }
- }
- /**
- * 结束全部的Activity
- */
- public void finishAllActivity() {
- for (int i = 0, size = activityStack.size(); i < size; i++) {
- if (null != activityStack.get(i)) {
- activityStack.get(i).finish();
- }
- }
- activityStack.clear();
- }
- /**
- * 退出应用程序
- */
- public void exitApp(Context context) {
- try {
- finishAllActivity();
- //杀死后台进程需要在AndroidManifest中声明android.permission.KILL_BACKGROUND_PROCESSES;
- ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
- activityManager.killBackgroundProcesses(context.getPackageName());
- //System.exit(0);
- } catch (Exception e) {
- Log.e("ActivityManager", "app exit" + e.getMessage());
- }
- }
- }
|