http://wiseideal.iteye.com/blog/1469295

解决方案 »

  1.   


    我不是问弱引用是怎么回事,是问这里为什么要用弱引用
    系统在内存不足想回收优先级低的activity或在你finish自己的activity时,用了强应用activity那片内存就无法释放了。
    导致内存泄漏。
      

  2.   

    个人觉得没必要用弱引用,这个Handler是个内部类,直接可以引用ApplicationContext上下文
      

  3.   

    1.当一个Android应用启动的时候,会自动创建一个供应用主线程使用的Looper实例。Looper的主要工作就是一个一个处理消息队列中的消息对象。在Android中,所有Android框架的事件(比如Activity的生命周期方法调用和按钮点击等)都是放入到消息中,然后加入到Looper要处理的消息队列中,由Looper负责一条一条地进行处理。主线程中的Looper生命周期和当前应用一样长。2.当一个Handler在主线程进行了初始化之后,我们发送一个target为这个Handler的消息到Looper处理的消息队列时,实际上已经发送的消息已经包含了一个Handler实例的引用,只有这样Looper在处理到这条消息时才可以调用Handler#handleMessage(Message)完成消息的正确处理。3.在Java中,非静态的内部类和匿名内部类都会隐式地持有其外部类的引用。静态的内部类不会持有外部类的引用。你可以参考这篇文章http://droidyue.com/blog/2014/12/28/in-android-handler-classes-should-be-static-or-leaks-might-occur/