-
底部菜单栏 切换——Fragment运用
-
主页(显示新闻列表)——ListView
-
设置(退出应用、退出登录、清空缓存)——Activity管理、SharePreference
-
我的(账号安全、新闻收藏夹)——SQLite
-
新闻列表下拉、上滑实现刷新——自定义ListView
-
逐条收藏新闻、删除新闻——SharePreference
-
仿UI界面——各类控件运用
-
点击查看新闻详情 —— WebView
-
用户界面更换头像功能——Android运行时权限、多媒体、Content Provide
2、简单说一下Activity生命周期?
下图是Activity状态转换图(注意图中,方框内执行的是状态转换的过程,并不是状态,状态如前述,只有三种:RUNNING / PAUSED / STOPPED。)
3、简述一下RecyclerView缓存机制?
RecyclerView在Android的应用上可以说已经取代了listview,其灵活,组装式设置,多缓存机制可以适应多列表在Android开发中各种各样的需求。
对于RecyclerView的缓存机制一直都想稍微的屡下思路,简单点说RecyclerView对比listview缓存机制中就是多了两层缓存的支持,listview是两级缓存,RecyclerView为四级缓存(当然在大部分情况下是三级缓存)。
4、在一个listview里每个item中都有一个动画(gif)播放的view,当我点击item中的button时动画(gif)播放。当有动画播放时滑动listview,偶尔会发生item错位的事件。原因是什么?
这是item复用的问题,由于异步加载导致图片错位
5、当Activity有多个Handler的时候,Message消息是否会混乱?怎么样区分当前消息由哪个Handler处理?
不会混乱,哪
个Handler发送的消息,到时候也是这个handler处理。在发送消息的时候,会绑定target,这个target就是Handler本身,当需要handler调用dispatchMessage(msg)处理消息的时候,这个Handler就是发送消息时绑定的handler。
无论用哪一种方法发送消息,最终都会调用enqueueMessage(MessageQueue queue, Message msg, long uptimeMillis)来发送消息
private boolean enqueueMessage(MessageQueue queue, Message msg, long uptimeMillis) {
msg.target = this;
if (mAsynchronous) {
msg.setAsynchronous(true);
}
return queue.enqueueMessage(msg, uptimeMillis);
}
这里的this,就是当前的handler。在来看需要Handler处理消息的时候,取的是哪一个handler,下面贴出主要源码。
public static void loop() {
…
for (;