Android常见bug

来源:互联网 发布:微软编程一小时官网 编辑:程序博客网 时间:2024/06/04 18:06

1、

[Bug的log信息]

ActivityManager: Killing15635:com.android.music/u0a41 (adj 0): depends on providercom.android.providers.media/.MediaProvider in dying procandroid.process.media 

[原因分析]

存在没有关闭的cursor

[解决方案]

排查代码中的cursor使用,关闭未关闭的cursor

2、

[Bug的log信息]

ProcessKiller :Process com.android.gallery3d (2439) has open file/storage/emulated/0/Android/data/com.android.gallery3d/cache/bookmark.idx 

[原因分析]

进程gallery3d因文件句柄未关闭,被重启

[解决方案]

关闭文件句柄或者捕获异常,处理没有创建成功的文件

3、

[Bug的log信息]

java.lang.NullPointerException:Attempt to invoke virtual method "xxx" on a null object reference at ......

[原因分析]

空指针异常,调用某方法的对象为空

[解决方案]

添加空指针防护(对对象进行判空),或者根据逻辑需要新建对象

4、

[Bug的log信息]

signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
Abort message: 'art/runtime/indirect_reference_table.cc:115] JNI ERROR (app bug): local reference table overflow (max=512)'

[原因分析]

向JNI传递大量的数据,或者创建了大量对象,若不及时释放,则会造成上述错误

[解决方案]

1.将Java String转换为native String之后,调用ReleaseStringUTFChars释放

if (MNull != pszPath && MNull != strJString)
{
env->ReleaseStringUTFChars(strJString, pszPath);
}

2.用完java传递过来的obj后,调用(env)->DeleteLocalRef(obj);释放


0 0
原创粉丝点击