美文网首页
crash的实践总结

crash的实践总结

作者: 天天听听 | 来源:发表于2017-10-30 15:12 被阅读0次

相信编译器

1、大部分Crash应该都是有空指针异常导致的

2、对于大部分的简单的空指针异常,请相信编译器。Android studio中,对于大部分可能出现异常的情况,都会有相应的警告。

3、请尽量处理编译器的警告

4、大部分项目,应该eclipse中开发,可以转换为android studio项目,或者将代码复制到android中。

5、android studio的警告,错误提示比eclipse好的多。

异步任务的回调异常

1、为了避免出现ANR,apk大量使用了异步任务,大部分为AysncTask,handle

2、在onPostExecute中,如果当前的Activity已经finish或者不存在时,就会出现crash。这种情况十分常见。

解决方案:

1、如果在onPostExecute存在刷新页面的动作,请先判断当前的Activity是否存在。

2、在onPostExecute中,最常见的操作应该是Toast和closeProcess。

对于这两者,可以在BaseFragment和BaseActivity提供方法。该方法要先判断Activity是否存在。

关键方法1:

public boolean isActivityFinish() {

return mActivity == null || mActivity.isFinishing();

}

关键方法2:

public void closeProcess() {

if (isActivityFinish()) {

return;

}

if (mProgressDialog != null) {

mProgressDialog.dismiss();

mProgressDialog = null;

}

}

关键方法3:

public void showToast(int rId) {

if (isActivityFinish()) {

return;

}

Toast.makeText(this, rId, Toast.LENGTH_SHORT).show();

}

初始化放在异步线程里

有些情况下,初始化过程比较久,为了避免anr,我们需要把初始化过程放在异步线程里。这就出现了相应问题:

1、对于变量,初始化后才能赋值。

2、如果立即使用,初始化过程未结束,就可能出现crash异常

规范方法:

1、如果可以使用默认值的,请在声明的同时设置默认值。

2、使用同步锁。如果变量未初始化完成,等待一段时间(自定),直至初始化完成。

参考源码:HandleThread类。

Mvp中的crash

Mvp实现了代码和逻辑的分离,但是也会引入内存泄露问题。

为了解决内存泄露,就需要及时置空view和presenter对象,这样就很可能出现crash。这一现象大量存在,可以批量处理。

规范方法:

1、在基类接口中声明,isViewActive方法,要求所有的presenter实现该方法,可以有效减少这类现象。

版本兼容和权限

作为一个不断迭代演进的系统,版本兼容无法避免。

解决方案:

1、查看官方的变更记录和说明,提前做好规避

2、提前使用新版本编译。查看是否有异常。

权限异常:

作为rom的应用,很少有个这个问题。但是在demo经常遇到。敏感权限要使用动态声明,并且做出处理。

配置错误和其他

这是一个低级的常见错误:

使用了一个Activity,但是却没有在配置文件中声明。

其他建议:

尽量使用String.valueOf(Object o)代替toString方法

Interger.valueOf(String str)请捕获异常

list和数组先判空,判断长度

Content对能使用Application对象的请尽量使用

如果对象有置空的操作,使用前必须检查

相关文章

  • crash的实践总结

    相信编译器 1、大部分Crash应该都是有空指针异常导致的 2、对于大部分的简单的空指针异常,请相信编译器。And...

  • iOS 中常见 Crash 总结

    iOS 中常见 Crash 总结iOS 中常见 Crash 总结

  • iOS crash符号化

    工作中碰到crash是家常便饭,但怎么去分析crash,吃好这顿饭呢,我根据一些资料和自己的实践总结了下。 平时我...

  • crash 分析

    工作中碰到crash是家常便饭,但怎么去分析crash,吃好这顿饭呢,我根据一些资料和自己的实践总结了下。 平时我...

  • 美团技术文档总结-crash

    android crash治理: 我的crash治理: 代码逻辑上的错误引发的crash-----修复并总结 兼容...

  • 《Study Skills》-- 如何学习?

    总结于 《Crash Course Study Skills》视频.Youtube Crash Course St...

  • iOS经典Crash分析与总结

    iOS经典Crash分析与总结

  • iOS crash分析

    Crash分析总结:主要分析AppStore线上版本的crash bug1.登录开发者账号,iTunes conn...

  • 《Python编程:从入门到实践》分享下载

    书籍信息 书名:《Python编程:从入门到实践》 原作名:Python Crash Course 作者: [美...

  • iOS crash分析实践

    背景 分享一些过去两个月遇到的crash。 正文 一、运行时错误 1、UICollectionView的调用顺序 ...

网友评论

      本文标题:crash的实践总结

      本文链接:https://www.haomeiwen.com/subject/flnppxtx.html