public class HKApplication extends Application {
private List<Activity> activityList = new ArrayList<Activity>();
@Override
public void onCreate() {
super.onCreate();
// 以下用来捕获程序崩溃异常
if (!Config.debug) {
Thread.setDefaultUncaughtExceptionHandler(restartHandler); // 程序崩溃时触发线程
}
}
// 创建服务用于捕获崩溃异常
private UncaughtExceptionHandler restartHandler = new UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread thread, Throwable ex) {
restartApp();//发生崩溃异常时,重启应用
}
};
// activity管理:从列表中移除activity
public void removeActivity(Activity activity) {
activityList.remove(activity);
}
// activity管理:添加activity到列表
public void addActivity(Activity activity) {
activityList.add(activity);
}
// activity管理:结束所有activity,彻底关闭应用
public void finishProgram() {
for (Activity activity : activityList) {
if (null != activity) {
activity.finish();
}
}
android.os.Process.killProcess(android.os.Process.myPid());
}
// activity管理:结束所有activity
public void finishAllActivity() {
for (Activity activity : activityList) {
if (null != activity) {
activity.finish();
}
}
}
// 重启应用
public void restartApp() {
Intent intent = new Intent();
// 参数1:包名,参数2:程序入口的activity
intent.setClassName(getPackageName(), "com.hk.shop.WelcomeActivity");
PendingIntent restartIntent = PendingIntent.getActivity(
getApplicationContext(), 0, intent,
Intent.FLAG_ACTIVITY_NEW_TASK);
AlarmManager mgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 1000,
restartIntent); // 1秒钟后重启应用
finishProgram(); // 自定义方法,关闭当前打开的所有avtivity
}
}
在配置文件中将我们默认的 application 更改为自己扩展的application
<application android:icon="@drawable/icon" android:label="@string/app_name"
7. android:name=".MyApplication"> 就是这儿,将我们以前一直用的默认Application给他设置成我们自己做的HKApplication
转发转发来自:http://zheyiw.iteye.com/blog/1670609
分享到:
相关推荐
AppManager 如何优雅的退出应用和处理崩溃异常自动重启
首先,我们肯定要在Application里面注册一个CrashHandler,监听应用crash public class TestApplication extends MultiDexApplication { private static TestApplication mInstance; @Override public void ...
Android 应用崩溃自动启动 给用户给好的体验 本应用还可以扩展为类似京东崩溃时弹出信息反馈框 这需要你自己实现哦 另外欢迎关注我的新浪微博@MinganCai 有问题可以@我 我会尽快给你们回复的 雷锋
Android 拦截系统崩溃的程序,并自定义拦截后处理事件,防bug的神器 本来点击Button时会报错,处理过之后,3秒后会自动关闭并重启
下载源码编译或者下载apk包并安装,应用xposed模块后重启,运行加固的应用后,插件会自动将dex文件dump到 /data/data/包名/dump 目录 apk文件不会实时更新,获取最新apk请自行编译源码 源码编译 将源码下载或者clone...
崩溃库上的自定义活动该库允许在应用程序崩溃时启动自定义活动,而不是显示讨厌的“不幸的是,X已停止”对话框。如何使用一站式安装将以下依赖项添加到您的build.gradle中: dependencies { compile ' cat.ereza:...
运行加固的应用后,插件会自动将dex文件dump到/ data / data /包名/ dump目录apk文件不会实时更新,获取最新apk请自行编译源码原始码编译将二进制下载或克隆到本地,使用android studio打开,编译成功后,安装apk,...
android计步器的实现,自定义的一个弧形进度条,记步通过手机的传感器来实现,也就是说不支持传感器的机子(应该很老的了吧)就没有效果。看看效果图: 这里写图片描述这里写图片描述 自定义View public class ...
使用 Myo 快速构建您计划构建的应用程序原型 版本 1.1 - 修复了无需重启服务即可工作的设置,添加了重新锁定时间设置,添加了显示 Myo 状态的通知。 将 Myo SDK 更新为 0.8(需要在 Myo 上安装 1.0.3 固件)。 ...
这里我们解压后的目录为c盘的android-ndk-r10d目录。 启动"C:\adt-bundle-windows-x86-20140624\eclipse\eclipse.exe" 选择菜单栏上的[Window->Perferences->Android->NDK]设置 NDK Loaction 为C:\android-ndk-r10d...