笔记1handler/广播/布局/AIDL

来源:互联网 发布:手机网络锁原理 编辑:程序博客网 时间:2024/06/03 09:50

1.在单线程模型中Message、Handler、MessageQueue、Looper之间的关系

   Message消息,Handler用于消息的发送和消息的处理,MessageQueue消息队列用于存放handler发布的消息,先进先出,Looper是MessageQueue的管理者,当在UI中创建Handler对象时,系统默认给当前UI线程创建好了对应的Looper对象,这个Looper对象管理着对应的MessageQueue,在子线程中创建Message对象由handler发出,message存放在MessageQueue当中,当MessageQueue中存在message的时候Looper会不停的从MessageQueue中取出message,然后handler通过回调handlemessage方法对message进行处理并更新UI,这种是Handler的主流用法,当让handler也可以在子线程中创建时先需要通过praper方法获得Looper对象,并且需要调用loop方法不断获取message,需要注意的是loop是一个无限循环的方法,需要放在方法中的最后一行。


2.广播接收者静态注册与动态注册的区别?

静态注册的广播是在mainifist中注册,而动态注册是在代码中创建的目前按照老师讲的来说一般是在onCreate方法中创建,静态注册不需要解除注册,而动态注册需要在程序退出时取消注册,目前来看一般需要在ondestroy方法进行取消注册,静态注册的广播接收者只要是程序安装无论是否在运行状态都可以接收广播,而动态注册的广播只有在运行状态中才能够接收广播。


3.安卓中常用的五种布局?

一、FrameLayout所有的都是从左上角开始放,会重叠,这个布局比较简单;

二、LinearLayout线性布局可以设置按照水平方向和竖直方向进行排列,当为水平排列时这种布局只有一行从左到右排列直至把下一个元素挤出屏幕,当为竖直排列时每一行一个元素依次往下排列当放不下时会把下一个元素挤出屏幕,线性布局能够设定放入其中元素的权重按照一定比例来排列;

三、AbsoluteLayout绝对布局是用X,Y坐标来指定元素的位置,计算会比较麻烦同时在屏幕旋转的时候会遇到一些问题;

四、RelativeLayout相对布局是以某一元素为参照物来定位的布局方式,可以规定某一个元素在别的元素的相对位置,元素之间能够层叠很灵活;

五、TableLayout:表格布局,每一个TableLayout里面有表格行TableRowTableRow里面可以具体定义每一个元素。

最后,每一个布局都有自己适合的方式,这五个布局元素可以相互嵌套应用,做出美观的界面。


4.AIDL的全称是什么?如何工作?能处理哪些类型的数据?

   AIDL的全称是Android Interface DefineLanguage  

跨进程访问service,AIDL是一种接口描述语言,编译器可以通过aid文件生成一段代码,通过预先定义的接口达到两个进程内部通讯进程的目的

如果需要在一个Activity访问另一个Service中的某个对象需要先将对象转化成AIDL可识别的参数(可能是多个参数), 然后使用AIDL来传递这些参数在消息的接收端使用这些参数组装成自己需要的对象.

AIDLIPC的机制和COMCORBA类似是基于接口的,但它是轻量级的。它使用代理类在客户端和实现层间传递值如果要使用AIDL, 需要完成2件事情: 1. 引入AIDL的相关类.; 2. 调用aidl产生的class.

AIDL的创建方法:     AIDL语法很简单,可以用来声明一个带一个或多个方法的接口,也可以传递参数和返回值。 由于远程调用的需要这些参数和返回值并不是任何类型.下面是些AIDL支持的数据类型:

1. 不需要import声明的简单Java编程语言类型(int,boolean)

2. String, CharSequence不需要特殊声明

3. List, MapParcelables类型这些类型内所包含的数据成员也只能是简单数据类型, String等其他比支持的类型.

 
0 0
原创粉丝点击