android面试(基础篇 9)
来源:互联网 发布:python 判断加载完成 编辑:程序博客网 时间:2024/05/29 02:36
4)Activity,Window,View三者的差别,Fragment的特点?
Activity是控制单元,Window是承载模型,View是显示视图(窗花),LayoutInflater是剪刀,
Xml像窗花的图纸。
(1)在Activity中调用attach,创建一个window
(2)创建window是其子类PhoneWindow,在attach中创建的是PhoneWindow
(3)创建Activity中调用setContentView(R.layout.xxx)来绑定view,其中实际上是调用的
getWindow().setContentView(),即调用PhoneWindows中的setContentView方法。
(4)创建ParentView:作为ViewGroup的子类,实际是创建的DecorView,将制定的Layout
通过布局填充器进行填充,调用ViewGroup的removeAllView先将所有的view移除掉
(5)添加新的View:addView()
Fragment的特点
(1)Fragment可以作为Activity界面的一个组成部分出现
(2)可以在一个Activity中出现多个Fragment,并且一个Fragment也可以在多个Activity中使用
(3)Activity运行过程中可以添加,移除或者替换Fragment
(4)Fragment可以相应自己的输入事件,并且有自己的生命周期,他们的生命周期会受到宿主
Activity的生命周期影响。
5)Handler,Thread和HandlerThread的差别
从Android中Thread描述可以看出,Android的Thread没有对Java的Thread做任何封装,但是Android
提供了一个基础自Thread的类HandlerThread,这个类对Java的Thread做了很多针对Android系统的封装。
android.os.Handler可以通过Looper对像实例化,并运行于另外一个线程中,Android提供了让Handler
运行与其他线程的线程实现,也就是HandlerThread。HandlerThread对象start后可以获得其Looper对象
并使用这个Looper对象实例化Handler。
6)低版本SDK实现高版本API
自己实现或者@TargetApi annotation
使用@TargetApi annotaion, 使高版本API的代码在低版本SDK不报错
例如:AsyncTask.THREAD_POOL_EXECUTOR, 这个静态变量是API11才有的, 设置project build target 为 2.1.
这个时候eclipse会提示找不到这个变量。只要在方法前面加一个 @TargetApi(11), 这样就不会报错了,程序
已经可以跑在低版本SDK上了。另外在代码上要加一个版本判断是否执行该代码, 例子如下
@TargetApi(11)
- android面试(基础篇 9)
- android 面试(基础篇 1)
- android 面试(基础篇 2)
- android 面试(基础篇 3)
- android 面试(基础篇 6)
- android 面试(基础篇 7)
- android面试(基础篇 8)
- android面试(基础篇 10)
- 面试总结-Android基础篇
- android 面试 (基础篇 4)
- android 面试 (基础篇 5)
- android面试 (基础篇 11)
- android面试 android知识点 基础篇
- android面试集锦5-java基础9
- android面试基础(继续更新)
- android 基础知识点(面试准备)
- Android面试基础
- android面试基础总结
- HDU 1558 判断两个线段相交附带并查集
- 使用Pull 解析XML文件
- HDU2176 取(m堆)石子游戏
- 《入门经典》2
- JDBC PreparedStatement接口的应用
- android面试(基础篇 9)
- activity的双向传值
- Ubuntu 14.04 ssh的安装和配置
- UVALive 7261 Xiongnu's Land(二分)
- hdu4707Pet最短路(spfa)
- [2482]二叉排序树
- 二叉排序树
- ORACLE的 数据装载 sql loader
- sudsn 转自豆瓣 LPTHW习题