Chinaunix首页 | 论坛 | 博客
  • 博客访问: 403501
  • 博文数量: 78
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 940
  • 用 户 组: 普通用户
  • 注册时间: 2013-08-25 09:39
文章分类

全部博文(78)

文章存档

2016年(7)

2015年(1)

2014年(35)

2013年(35)

我的朋友

分类: Android平台

2014-11-19 17:10:37

AsyncTask适合的比较短的操作1、2秒。Activity可能早于AsyncTask执行完被销毁,如果AsyncTask还继续执行,有可能会浪费资源,并且如果AsyncTask里引用了Activity或部分的View Hierarchy,还会造成引用的对象不会被垃圾回收而引起内存泄漏。通常AsyncTask会定义为Activity的一个匿名inner class,这会建立一个隐式的引用到Activity。
http://www.cnblogs.com/plokmju/p/3264921.html

      Handler的异步编程是基于消息队列模型的。执行任务的线程称之为Looper线程,其他线程则将需要异步执行的任务发送给Looper线程--插入其消息队列,方法有:post(较方便使用,但每次需要创建新对象)或sendMessage(较高效,复用消息实例,适合执行大量类似的异步任务),适合更长一点的(>2秒)的异步任务处理。使用Handler和AsyncTask一样,要注意匿名inner class对Activity的隐式引用而造成内存泄漏,所以使用的时候要记得清理; 解决方法是使用对使用的Activity中的View对象用Weak Reference,并处理当View对象为null的情况。
 http://www.cnblogs.com/plokmju/p/android_Handler.html

      Looper用于过来消息队列,Handler会把一个线程消息发送给当前线程的消息队列,从最后Handler会处理消息队列中的消息,这里的消息队列就是MessageQueue。Looper线程会永远循环,当没有消息的时候,Looper线程(消费者)会使用(Object.wait)方法等待其他线程(生产者)插入新的任务消息,这时候其他线程(Object.notify)。Android的主线程其实就是一个Looper线程。
 http://www.cnblogs.com/plokmju/p/3266988.html
阅读(1431) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~