一些问题记录
应用程序 res 目录常见的目录有哪些,分别放置什么类型的资源?
animator/ 和anim/ 放的都是定义动画的XML文件,两个地方的动画类型不同。
color/ XML文件:定义了不同状态下的view item显示的不同的颜色
drawable/ 不同分辨率有不同的文件夹 如drawable-hdpi 放置图片资源,各个文件夹下放置适用于各种分辨率的图。
layout/ 用户界面布局文件
menu/ 定义菜单
raw/ 任意的文件,此处文件直接添加至程序,然后使用Resources.openRawResource()调用
values/ 定义一些值:
arrays.xml 定义数组
colors.xml 定义不同颜色
dimens.xml 定义尺寸值
strings.xml 定义字符串
styles.xml 定义样式
xml/ 别的.XML文件
2) 举例说明系统查找资源的过程
根据res里面的所有内容会自动生成一个R.java 文件,给所有资源编号了,根据R文件就可以找到资源
代码中:
比如需要找一个图片,使用R.drawable.zhuyuanxuan即得到其引用。
在xml中,
3) Content Provider 中用到的 URI 是什么,和 URL 有什么差异?
URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。
而URL是uniform resource locator,统一资源定位器,
URI一般由三部分组成:
- 访问资源的命名机制。
- 存放资源的主机名。
- 资源自身的名称,由路径表示。
具体说到android中content provider的uri给其提供的数据建立了唯一的标识符。
比如 content://com.tplink.training.provider/staff
content:// 就是访问资源的命名机制 就是协议声明
com.tplink.training.provider 是authority 权限
/staff 是路径
这个就给staff这张表提供了唯一的标识符。
同时还可以使用相对uri,即相对地址标识资源。
相对的URI不是以scheme(后面跟着冒号)开始的URI。
比如说: articles/articles.html
总的来说:
在Java的URI中,一个URI实例可以代表绝对的,也可以是相对的,只要它符合URI的语法规则。而URL类则不仅符合语义,还包含了定位该资源的信息,因此它不能是相对的,schema必须被指定。
URL是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。
所以URL是RUI命名机制的一个子集。
4) Manifest 文件的作用是什么?
声明该工程的Java包名,
声明应用程序的组件:activities, services, broadcast receivers, and content providers.声明了组件实现的类,以及组件的功能,比如发送intent等。这是最主要的功能。
同时决定了哪个进程来使用组件
声明该程序需要用到的权限
以及Android API的版本等等
进程,线程问题
1)阻塞UI线程的后果是什么?如何避免?
后果就是产生ANR:应用的界面卡住,无法响应用户的操作,无法刷新或绘制界面。另外还会影响到广播的处理。
避免的方式就是所有的耗时操作都要开线程,在子线程里面进行操作。
2) 如何安全的刷新 UI?常用的 API 包括哪些?
刷新UI的方法:
- 使用handler
在子线程中使用Handler的sendMessage()方法,在UI线程中用Handler的handleMessage判断接受到的信息,进行相应的操作。 - AsyncTask利用线程任务异步更新UI界面
这个和handler 的机制差不多 doInBackground里面的内容就是在子线程里面跑的。 - 利用Activity.runOnUiThread(Runnable)把更新ui的代码创建在Runnable中
- 还有其他:
View.post(Runnable)
View.postDelayed(Runnable, long