Android设置已完成启动服务的侦听器

Android设置已完成启动服务的侦听器,android,android-service,Android,Android Service,运行代码后,我无法启动服务 我的服务级别: @Override public int onStartCommand(Intent intent, int flags, int startId) { super.onStartCommand(intent, flags, startId); mApplication.setService(this); } 现在: 也许是这样的 protected ServiceConnection mServerConn = new Se

运行代码后,我无法启动服务

我的服务级别:

 @Override
 public int onStartCommand(Intent intent, int flags, int startId) {
    super.onStartCommand(intent, flags, startId);

    mApplication.setService(this);
 }
现在:


也许是这样的

protected ServiceConnection mServerConn = new ServiceConnection() {
    @Override
    public void onServiceConnected(ComponentName name, IBinder binder) {
        Log.d(LOG_TAG, "onServiceConnected");
    }

    @Override
    public void onServiceDisconnected(ComponentName name) {
        Log.d(LOG_TAG, "onServiceDisconnected");
    }
}

public void start() {
    mContext.bindService(intent, mServerConn, Context.BIND_AUTO_CREATE);
    mContext.startService(intent);
}

停止服务时也不要忘记取消绑定service()。

然后使用
bindService
并等待
ServiceConnection
这很奇怪,因为服务与您的服务运行在同一线程上activity@TimCastelijns是的,对我来说,这不是威德。即使
服务
与您的
活动
在同一线程上启动,但当您调用
startService()
时,它不会立即启动。
startService()
所做的一切都是在事件队列中放置一个事件,上面写着“请启动此服务”。只有在Android框架获得控制权后,它才会处理事件队列中的事件。在你运行的任何方法结束之前,Android框架都无法获得控制权。即使如此,在Android启动您的
服务之前,事件队列中可能还有其他事件需要处理。
 startService(intent);
 mApplication.setIsServiceRunning(true);

 // i need like listener
 @Override
 onServiceIsRunComplete() {
      // here i'm sure that service is run
      mApplication.getService().MyMethodAnyThing();
 }
protected ServiceConnection mServerConn = new ServiceConnection() {
    @Override
    public void onServiceConnected(ComponentName name, IBinder binder) {
        Log.d(LOG_TAG, "onServiceConnected");
    }

    @Override
    public void onServiceDisconnected(ComponentName name) {
        Log.d(LOG_TAG, "onServiceDisconnected");
    }
}

public void start() {
    mContext.bindService(intent, mServerConn, Context.BIND_AUTO_CREATE);
    mContext.startService(intent);
}