android通过静态方法和binder获取service实例有什么区别

    
    private static PlayerService instance 

    public static PlayerService getInstance() {
        return instance;
    }


     public class MyBinder extends Binder {
           MyService getService() {
             return MyService.this;
         }
     }

有什么区别?

阅读 4k
1 个回答

表面来看,这两段代码所实现的功能是一样的,但是通过Binder去实现,可以良好的处理对象之间引用的关系,避免内存泄露的出现。如果以静态化去实现这个功能,你需要在没有程序需要使用Service,需要关闭Service时,把这个静态的引用给剔除掉,而这一点反倒增加很多负担。

推荐问题