您的当前位置:首页正文

XML数据转换

来源:独旅网
第一部分

Binder框架提供了三个模块:服务端接口,Binder驱动,客户端接口。

1.服务端----一个Binder服务端实际上就是一个Binder类的对象,该对象一旦创建,内部就启动一个隐藏线程。该线程接下来会接收Binder驱动发送的消息,收到消息后,会执行到Binder对象中的onTransact()函数,并按照该函数的参数执行不同的服务代码。因此要实现一个Binder服务,就必须重载onTransact()方法。

(1)重载onTransact()函数的主要内容是把onTransact()函数参数转换为服务函数的参数,而onTransact()函数的参数来源是客户端调用transaction()有固定格式的输入,那么onTransact()就会有固定格式的输出。

2.Binder驱动----任意一个服务端Binder对象被创建时,同时会在Binder驱动中创建一个mRemote对象,该对象的类型也是一个Binder类。客户端要访问远程服务时,都是通过mRemote对象。

3.应用程序客户端---客户端要想访问远程服务,必须获取远程服务在Binder对象中对应的mRemote引用。获得该mRemote对象后,就可以调用transact()方法,而在Binder驱动中,mRemote对象也重载了transact()方法,重载内容包括: (1)以线程间消息通信的模式,向服务端发送客户端传递过来的参数; (2)挂起当前线程,即客户端线程,并等待服务端线程执行完指定服务函数后通知(notify);

1.

(3)接收到服务端线程的通知,然后继续执行客户端线程,并返回到客户端代码区。s.getByName(\"localhost\");

2. } catch (UnknownHostException e) { 3. e.printStackTrace(); 4. }

5. intmsg_length = message.length();

6. byte[] messagemessageByte = message.getBytes();

7. DatagramPacketp = newDatagramPacket(messageByte, msg_length, local, 8. server_port); 9. try { 10. s.send(p);

11. } catch (IOException e) {

第二部分

12. s.getByName(\"localhost\");

13. } catch (UnknownHostException e) { 14. e.printStackTrace(); 15. }

16. intmsg_length = message.length();

17. byte[] messagemessageByte = message.getBytes();

18. DatagramPacketp = newDatagramPacket(messageByte, msg_length, local, 19. server_port); 20. try { 21. s.send(p);

22. } catch (IOException e) {

1. 设计Service端

从代码角度来讲,只需基于Binder类新建一个Service类即可。 设计一个MusicPlayerService类:

public class MusicPlayerService extends Binder{

@Override

Protected boolean onTransact(int code,Parcel reply,int flags) throwsRemoteException{

returnsuper.onTransact(code,data.reply,flags); }

Public voidstart(String filePath){ }

Public void stop(){ }

}

当要启动该服务时,只需要初始化一个MusicPlayerService对象即可 2. Binder客户端设计 3. 使用Service类

4. 系统服务中的Binder对象

第三部分---Android Framework内核

1. Framework框架 2. APK程序的运行过程 3. 客户端中的线程 4. 几个常见问题

第四部分---Framework的启动过程

1. Framework运行环境综述 2. Dalvik虚拟机相关的可执行程序 3. zygote的启动

4. SystemService进程的启动

第五部分---AMS内部原理

1. Activity调度机制

2. 内存管理

3. 对AMS中数据对象的理解 4. ActivityGroup的内部机制

5. s.getByName(\"localhost\");

6. } catch (UnknownHostException e) { 7. e.printStackTrace(); 8. }

9. intmsg_length = message.length();

10. byte[] messagemessageByte = message.getBytes();

11. DatagramPacketp = newDatagramPacket(messageByte, msg_length, local, 12. server_port); 13. try { 14. s.send(p);

15. } catch (IOException e) {

因篇幅问题不能全部显示,请点此查看更多更全内容