package com.bosi.chineseclass;
import java.util.Iterator;
import java.util.List;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.Application;
import com.bosi.chineseclass.components.ExitSystemDialog;
import com.bosi.chineseclass.db.BosiDbManager;
import com.bosi.chineseclass.han.db.DbManager;
import com.bosi.chineseclass.utils.AppActivityStack;
import com.lidroid.xutils.HttpUtils;
import com.sromku.simple.storage.SimpleStorage;
import com.sromku.simple.storage.Storage;
import com.umeng.analytics.MobclickAgent;
public class BSApplication extends Application {
// 文件系统
public Storage mStorage = null;
public AppActivityStack mActivityStack;
// 数据库系统
public DbManager mDbManager;
public BosiDbManager mDbBosiClass;
public HttpUtils mHttpUtils;
@Override
public void onCreate() {
super.onCreate();
mApplication = this;
storageManagerInit();
mDbBosiClass = new BosiDbManager(this);//项目逻辑
mActivityStack = new AppActivityStack();
mHttpUtils = new HttpUtils();
// CrashHandler.getInstance().init(this);
}
public static BSApplication mApplication = null;
public static BSApplication getInstance() {
return mApplication;
}
private void storageManagerInit() {
if (SimpleStorage.isExternalStorageWritable()) {
mStorage = SimpleStorage.getExternalStorage();
} else {
mStorage = SimpleStorage.getInternalStorage(this);
}
mStorage.createDirectory(AppDefine.FilePathDefine.APP_GLOBLEFILEPATH,
false);
}
// 退出系统要点赞
public void exitApp() {
ExitSystemDialog mDialog = new ExitSystemDialog(
(BaseActivity) mActivityStack.peek());
mDialog.mDialog.show();
}
public void destroySystem() {
try {
isBaiduServiceRunningKill();
} catch (Exception e) {
e.printStackTrace();
}
for (Activity mActivity : mActivityStack) {
if (mActivity != null && !mActivity.isFinishing()) {
mActivity.finish();
}
}
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(1);
}
// 检查服务运行状态
private void isBaiduServiceRunningKill() throws Exception {
android.os.Process.killProcess(getProcessPid(getPackageName()
+ ":remote"));
}
public int getProcessPid(String processName) {
ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> procList = null;
int result = -1;
procList = activityManager.getRunningAppProcesses();
for (Iterator<ActivityManager.RunningAppProcessInfo> iterator = procList
.iterator(); iterator.hasNext();) {
ActivityManager.RunningAppProcessInfo procInfo = iterator.next();
if (procInfo.processName.equals(processName)) {
result = procInfo.pid;
break;
}
}
return result;
}
@Override
public void onTerminate() {
super.onTerminate();
MobclickAgent.onKillProcess(this);
}
}