Android开发中常见问题

1.CrashHandler

当crash发生的时候,系统会调用UncaughtExceptionHandler的uncaughtException方法,在其方法中就可以捕获异常,存储到SD卡或者上传至服务器中。也可以集成三方的例如:腾讯的bugly,具体工具类网上很多,不细说了。。。

2.Mutlidex方法数越界问题

Android中单个dex文件能包含的最大方法数为655536,它包含frameWork,依赖jar包及应用本身的代码中的方法数。当应用方法数达到65536后,编译器就无法完成编译工作并抛出异常:DexIndexOverflowException

解决办法:5.0需要自己导入android-support-multidex.jar这个jar包,5.0之后,android默认支持次jar包

具体步骤网上很多不说了,主要思想就是如果越界,gradle就会在apk中打2个或者多个dex文件

局限性:导致应用启动速度变慢,在一些机型上可能出现奔溃

3.Android动态加载技术(插件化)

插件化都必须解决三个基础问题:资源访问、Activity生命周期的管理、ClassLoader的管理

Android项目中,动态加载技术按照加载的可执行文件的不同大致可以分为两种:

①动态加载so库;
HotFix

②基于ClassLoader的动态加载dex/jar/apk文件(现在动态加载普遍说的是这种);tinker

基本流程:

①把可执行文件(.so/dex/jar/apk)拷贝到应用APP内部存储;

②加载可执行文件;

③调用具体的方法执行业务逻辑;

应用启动的时候,都会fork zygote进程,装载class和invoke各种初始化方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值