如何获取Android Local Service实例

时间:2010-06-11 18:33:11

标签: android service

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

我不想使用bindService,因为我想自己处理服务的生命周期。

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

感谢。

/亨里克

2 个答案:

答案 0 :(得分:16)

  

我不想像我一样使用bindService   想要处理使用寿命   自己。

这并不意味着你必须避免bindService()。如果需要,请同时使用startService()bindService()

  

如何获取实例   如果我不使用,服务就开始了   bindService?

bindService()startService()一起使用,或使用单身。

答案 1 :(得分:5)

这是另一种方法:

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()。这避免了对服务的静态引用可能导致的内存泄漏。当然,您仍然需要确保您的活动不会挂在参考文献上。