代码之家  ›  专栏  ›  技术社区  ›  Henrik

如何获取Android本地服务实例

  •  15
  • Henrik  · 技术社区  · 15 年前

    我正在使用startService在我的应用程序中启动一个服务。

    如果不使用bindService,如何启动服务实例?我希望能够获取在服务类中创建的处理程序,以发布来自活动的消息。

    /亨里克

    2 回复  |  直到 15 年前
        1
  •  16
  •   CommonsWare    15 年前

    我不想像以前那样使用bindService 要处理的使用寿命时间 我自己。

    bindService() . 两者兼用 startService() bindService()

    我怎样才能得到一个实例 如果我不使用 绑定服务?

    bindService() 具有 startService() ,或使用单例。

        2
  •  8
  •   Brodo Fraggins    11 年前

    import android.app.Service;
    import android.content.Intent;
    import android.os.IBinder;
    
    public class MyService extends Service {
        private Binder binder;  
    
        @Override
        public void onCreate() {
            super.onCreate();
            binder = new Binder();
        }
    
        @Override
        public IBinder onBind(Intent intent) {
            return binder;
        }
    
        public class Binder extends android.os.Binder {
            public MyService getService() {
                return MyService.this;
            }
        }
    }
    

    onServiceConnected(...) 可以把它的论点 MyService.Binder 打电话给我 getService() 在上面。这避免了对服务的静态引用可能导致的内存泄漏。当然,你还是要确保你的活动没有挂在一个参考上。