您的位置:首页 > 移动开发 > Android开发

Android 知识体系

2016-03-18 19:16 656 查看
一、性能优化
1、布局优化
减少层次,view数量,ReleativeLayout和LinearLayout(weight)选择,viewstub,merge,include
2、代码优化
a、防止内存泄露(使用弱引用代替)
b、性能检测工具(DDMS,MAT,TracceView,HeryLayout)
c、bitmap,采样压缩,尽量使用drawable,使用弱引用缓存
d、效率优化 比如HashMap遍历可以采用迭代器

3、网络优化
a、使用gzip压缩,json代替xml,减少请求次数

二、安全机制
1、代码混淆,对抗dex2jar(特殊代码块是jd-gui工具无法查看)
2、对抗动态调试
2.1、在配置文件加入debuggable=true让程序不可调试,在代码中进行判断,杀死进程
2.2、检测模拟器  检测checkqemu的值是否为1,正常手机没有。、
3、防止重新编译
3.1、检测软件签名,获取signatures字段的值的hash
3.2、校验保护,可对dex的md5,hash,crc进行校验,每次编译crc都会改变。
4、加壳保护

Util类通过MyClassLoader完成对加密classes.jar的动态加载,内存中解密classes.jar,完成动态加载。
jni方法对应so函数名的混淆,在JNI_OnLoad方法中手动注册jni方法,不易查找对应关系。
抗动态调试: 当使用IDA动态调试该程序时,程序无法建立连接调试。
5、权限机制
5.1、每一个应用程序运行有一个uid,gid,使应用程序直接隔离,不能访问。如果要访问,通过androidapi,或者shareUserId
5.2、权限分为普通、危险、签名和系统签名级别,
5.3、组件权限:为组件设定权限,要启动就要有权限。

三、基础
3.1、源码角度分析
a、view的绘制流程,viewgroup事件传递流程
b、handler机制,looper,message,消息队列,HandlerThread(保证looper和handler同步,ThreadLocal相当于Map<threadId,Looper>)
c、

3.2、Fragment汇总
a、fragment之间数据传递
b、startActivityForResult接收不到数据

3.3、屏幕适配
多使用weight,创建多个不同的布局文件(平板和手机双面板布局),Google百分比布局

3.4 Activity解析机制
intent-filter(凡是指定的都必须有,action->data->categroy)
3.5、打包流程

四、第三方框架/架构
4.1、插件化机制
a、替换getResource,通过AssetManager反射addAssetPath执行dex中的方法 。 addAssetPath.invoke(assetManager, dexPath); 通过assetManager创建出Resources。
b、重写getResources()方法,【Activity->ContextWrapper->Context(抽象类,实现者ContextImpl)】,替换其值。
c、使用代理的模式去管理activity声明周期。
4.2、ImageLoader框架
a、bitmap强引用

4.3、Xutils框架
a、BitMapUtils

b、ViewUtils

4.4、GreenDao

4.5、MVC,MVP,MVVM架构

4.6、EventBus框架

五、java
5.1、内存模型
a、堆和栈

b、如何停止线程:使用标志字段,但对于阻塞线程(sleep)不起作用。可以调用线程interrupt方法,阻塞线程会抛出interruptException,在结合volatile关键字修饰字段可以解决。
c、volatile对所有线程具有可见性,一个线程对其修改,其他线程可以获取修改的值。
d、
5.2、java和android虚拟机原理

5.3、多线程并发
synchronized,lock锁(需要手动释放锁),信号灯Semaphore

5.4、网络编程

六、设计模式
单例,
模板方法,
适配器,
观察者,
工厂方法,
代理模式

七、数据结构
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: