http://www.androidblog.cn/ Android博客周刊
1、类加载器,DexClassLoader 和 PathClassLoader区别
http://bbs.9ria.com/thread-252531-1-1.html
PathClassLoader是通过构造函数new DexFile(path)来产生DexFile对象的;而DexClassLoader则是通过其静态方法loadDex(path, outpath, 0)得到DexFile对象。这两者的区别在于DexClassLoader需要提供一个可写的outpath路径,用来释放.apk包或者.jar包中的dex文件。换个说法来说,就是PathClassLoader不能主动从zip包中释放出dex,因此只支持直接操作dex格式文件,或者已经安装的apk(因为已经安装的apk在cache中存在缓存的dex文件)。而DexClassLoader可以支持.apk、.jar和.dex文件,并且会在指定的outpath路径释放出dex文件。
另外,PathClassLoader在加载类时调用的是DexFile的loadClassBinaryName,而DexClassLoader调用的是loadClass。因此,在使用PathClassLoader时类全名需要用”/”替换”.”。
双亲委托机制
apk动态加载机制
插件化开发
动态代理
2、线程中如何更新ui方法,view.post,handler.post,runOnUiThread
public boolean post(Runnable action) {
final AttachInfo attachInfo = mAttachInfo;
if (attachInfo != null) {
return attachInfo.mHandler.post(action);
}
ViewRootImpl.getRunQueue().post(action);
return true;
}
public final void runOnUiThread(Runnable action) {
if (Thread.currentThread() != mUiThread) {
mHandler.post(action);
} else {
action.run();
}
}
mUiThread = Thread.currentThread();在attach方法中获取的,它是主线程
3、View dispatchDragEvent,onTouchEvent
ViewGroup 必须onLayout,onInterceptTouchEvent默认返回false,dispatchDragEvent,onTouchEvent(true消费事件)
事件执行顺序
4、 自定义组件5、 dip设备独立像素,如果指定占手机宽度一般,所有(手机)分辨率都占一般。 px 如果是px则显示长度不一 区别 sp
dpi 、 dip 、分辨率、屏幕尺寸、px、density 关系以及换算
6、 dom sax pull: sax 和 pull区别:
sax 缺点:单遍解析,使它不能支持随机访问,必须实现多个事件处理程序以便能够处理所有到来的事件.SAX很少被用于操作或修改文档。不能停止解析,一旦开始就到结束,除非手动停止(抛出异常和设置标志位)。
Pull解析器和SAX解析器虽有区别但也有相似性。他们的区别为:SAX解析器的工作方式是自动将事件推入注册的事件处理器进行处理,因此你不能控制事件的处理主动结束;
http://www.cnblogs.com/xiaoluo501395377/p/3444744.html
而Pull解析器的工作方式为允许你的应用程序代码主动从解析器中获取事件,正因为是主动获取事件,因此可以在满足了需要的条件后不再获取事件,结束解析。这是他们主要的区别。
7、activity 启动模式,任务栈相关知识
8、四大组件(服务)广播,注册方式,区别,生命周期,响应时间
9、代码混淆 ,混淆时四大组件不能混淆, 代码安全 加壳技术
10、app 加载流程,进程,入口,入口之前的流程
11、方法数超过65k如何处理?1、插件开发,2、分包处理
12、精通常用数据结构与算法,常用算法,冒泡,选择算法(选出最大或最小),插入算法(从第二个元素开始,将其插入到前面有序列中,先找位置,在进行元素移动),快速排序,二叉树排序(前序,后序,中序)
归并算法 算法第四版 白话经典算法
13、Fragent生命周期,Fragment嵌套时出现情况,上下文为空,onActivityResult接收不到
http://blog.csdn.net/lmj623565791/article/details/37970961 Fragment遇到问题 fragment嵌套问题 Fragment重叠 Fragment无UI保存数据
14、listview优化,性能优化,布局优化,资源优化(及时关闭或释放资源),多布局实现
15、缓存算法:LruCache .... 如何命中 命中概率
16、图片处理,缩放和压缩
17、JNI NDK 相关
18、Window源码
19、网络协议 http协议,Tcp/Ip协议
20、 Dalvik虚拟机类加载机制
21、二维码登陆
22、Looper,Handle,Message,MessageQueue 之间的关系
开发过程中有时候会在Thread类中执行某些操作,有些操作会由于Android版本的不同,尤其是低版本而Crash,因此必要的时候会查看某些容易引起crash的操作是否是在主线程,这里举三种方法:方法一:使用Looper类判断
Looper.myLooper() == Looper.getMainLooper()
方法二:通过查看Thread类的当前线程
Thread.currentThread() == Looper.getMainLooper().getThread()
Handler防止内存泄露 Handler在主线程与子线程之间互发消息
24、java相关 Java内存区域和GC机制 GC的工作原理
25 进程 Android下写一个永远不会被KILL掉的进程/服务 优雅的杀死后台服务而不启动 如何写一个不会被系统自动 kill 的程序(android开发)(已封装)
26 设计模式
27、布局优化
28、第三方框架源码阅读
EventBus实战 ImageLoader源码解析 lmj的ImageLoader
29、控件动画
30、
31 Android WebView
Android WebView常见问题及解决方案汇总 Android学习之 WebView使用小结
32、系统管理
Android静默安装实现方案,仿360手机助手秒装和智能安装功能 Android Messenger完全解析 实现进程间通信