安卓笔记二 多线程编程

       服务是基于应用程序的进程所开展而来,依赖改进程的应用程序。

       安卓的UI线程是不安全的,要实现应用程序中的UI元素,必须在主线程中进行,否则异常。(即打开应用为主线程,而应用中的功能必须在子线程中进行)

      利用异步消息处理机制进行UI操作。 即,将子线程程序不做逻辑动作,而将子线程发出message给Handler,Handler接收到后,在handlerMessage()中进行处理,而此时方法已在主线程中,故子线程发消息给主线程的接受者,再在主线程中进行处理逻辑动作。 

     安卓中的异步处理消息机制由4个部分组成:Message,Handler,MessageQueue,Looper。

     1.Message   在线程之间传递消息,本身可携带少量信息。

     2.Handler  用于发送和处理消息,发消息用的是Handler的sendMessage()方法, 接受到消息是在Handler的handler的handleMessage()方法中。

     3.MessageQueue 存放通过Handler发送过来的消息,类似于一个消息队列

     4.Looper 作为MessageQueue的管家,调用了Looper 的loop()方法后 实现一个循环,每回取以此队列中的消息,再和前面的过程一样,传递到Handler的handlerMessage()方法中。

    总结下来就是,首先在主线程中创建Handler对象,并且重写了handlerMesaage()方法。子线程要进行UI操作时,创建一个Message对象,并利用Handler将消息发出,发出的消息被添加到MessageQueue队列中,接着Looper从队列中取出消息,再分发回Handler的handlerMessage()方法中,由于此方法建立在主线程中,故。

 

 

服务

定义一个服务,重写Service中的方法

onCreate()   在服务创建时调用         

onStartCommand()  在每次服务启动时调用   

 onDestory() 在服务销毁时调用(回收不再使用的资源)

 

活动与服务之间的通信   P356

活动通知了服务,服务就直接进行下去了, 活动在指挥服务的进行。即只提供通知开始服务,但并不知道活动中服务进行的情况

创建一个A类来继承Binder,并在A类内部提供方法, 然后再继承Service的服务中创建A的实例,在onBinder()方法中返回这个实例,如此这个服务就完成了。            当一个活动和服务绑定时,即可调用服务中的Binder提供的方法。                                                                                                                 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值