1、handler 机制的原理
Handler 先进先出原则。
Looper 类用来管理特定线程内对象之间的消息交换(Message Exchange)。
1)Looper: 一个线程可以产生一个 Looper 对象,由它来管理此线程里的MessageQueue(消息队列)。
2)Handler: 你可以构造 Handler 对象来与 Looper 沟通,以便 push 新消息到MessageQueue 里;或者接收 Looper 从 Message Queue 取出)所送来的消息。
3) Message Queue(消息队列):用来存放线程放入的消息。
4)线程:UI thread 通常就是 main thread,而 Android 启动程序时会替它建立一个 MessageQueue。
2、说说 mvc 模式的原理,它在 android 中的运用
View 重绘和内存泄露的好像是面试经常问的问题
1. View 的刷新:
在需要刷新的地方,使用 handle.sendmessage 发送信息,然后在 handle 的getmessage里面执行 invaliate 或者 postinvaliate.
2. GC 内存泄露
出现情况:
1.数据库的 cursor 没有关闭
2.构造 adapter 时,没有使用缓存 contentview,衍生 listview 的优化问题-----减少创建view 的对象,充分使用contentview,可以使用一静态类来优化处理 getview 的过程/
3.Bitmap 对象不使用时采用 recycle()释放内存
4.activity 中的对象的生命周期大于 activity
调试方法: DDMS==>HEAPSZIE==>dataobject==>[TotalSize]
Activity的生命周期
在一个 Activity 正常启动的过程中,
他们被调用的顺序是 onCreate -> onStart->onResume;
在 Activity 被干掉的时候顺序是 onPause -> onStop-> onDestroy ;
这样就是一个完整的生命周期