应用安全关闭
来源:互联网 发布:sql select语句返回值 编辑:程序博客网 时间:2024/05/17 22:00
#
针对项目中的一些代码,这些代码在编码时没有明确的要求try catch.容易被开发者忽略。
可能产生比较严重的问题。例:主界面打不开。
可以使用安卓提供的一个捕获全局异常的接口,可以把程序抛出来未处理的异常都捕获到然后再处理。
UncaughtExceptionHandler必须注册在Application中
1.创建一个类继承Application,重写onCreate(),并且在清单文件中配置,2.在类中创建一个全局的成员变量:存放activity的集合,提供get方法3.实现这个接口:UncaughtExceptionHandler;并且用代码注册4.如果捕获到异常,在接口的重写方法内,释放所有的activity,清空集合5.创建一个BaseActivity继承Activity,创建全局的Application对象,调用get()方法,获得当前的activity,并且添加到存放activity的集合中 ,当销毁时,将集合的元素清空6.自己的activity就继承BaseActivity类.eg:一个继承Application 的MyApp类: 需要去功能清单里面进行配置<applicationf android:name="com.example.application.MyApp"/*在这个类的所有的成员变量都是唯一的,并且是全局的,无论在哪个页面拿到,都是一样的,相当于单例模式创建*///提供一个获取应用的所有activity集合的方法;public List<Activity> activities = new ArrayList<Activity>(); //保存应用的activity一个集合public List<Activity> getActivities() { return activities;}@Overridepublic void onCreate() { super.onCreate(); //全局异常捕获 UncaughtExceptionHandler ucHandler = new UncaughtExceptionHandler() { @Override public void uncaughtException(Thread thread, Throwable ex) { /* * 在开发中可以将错误信息保存起来上传到服务器,方便程序的维护 保存log日志用打印流完成(假设保存到应用目录下) */ File file = new File("data/data/" + getPackageName() + "/log.txt"); try { if (!file.exists()) { file.createNewFile(); } PrintWriter pw = new PrintWriter(file); //注意打印的方法 ex.printStackTrace(pw); //上传到服务器的操作..... } catch (Exception e) { e.printStackTrace(); } //关闭应用 for (Activity ac : activities) { ac.finish(); // 安全关闭 } activities.clear(); //释放集合 } }; //必须要注册 ---用当前的线程来完成 Thread.currentThread().setUncaughtExceptionHandler(ucHandler); }}
继承Activity的BaseActivity类
` public class BaseActivity extends Activity {private MyApp app;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); app = (MyApp) getApplication(); //拿到一个全局上下文 app.getActivities().add(this); //将这个activity放入集合中}@Overrideprotected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); app.activities.clear(); //清空}}`
0 0
- 应用安全关闭
- 关闭应用
- 关闭应用
- 关闭应用
- 应用关闭
- PHP 关闭安全模式
- 如何安全关闭串口
- 关闭Google 安全搜索
- MySQL关闭安全模式
- android开发游记:关闭所有Activity安全退出应用的方法总结
- 应用安全
- Delphi线程的安全关闭
- 怎样关闭windows安全警报
- 怎么关闭IE安全提示
- chrome浏览器关闭安全模式
- C# Socket的安全关闭
- vs2013关闭安全函数检查
- Linux关闭selinux安全子系统
- 正则表达式
- Java面试题-集合
- hdu 1224 Free DIY Tour(dp)
- Ext.form.ComboBox使用方法介绍和级联使用
- Minesweeper
- 应用安全关闭
- Xshell 跳板机配置、Secure CRT 跳板机配置总结
- PADS布线问题(【同网络不能够连线】)
- Android Theme详细
- Node.js历险记之剑未配好,已出江湖
- tzpzzbxpdvvdvpv
- AndroidStudio中添加依赖的三种方式
- C语言习题 折半查找
- iOS 推送后台语音播报