Как привязать к запущенному сервису Android? - PullRequest
1 голос
/ 29 июля 2010

Я надеюсь, что это больше проблема с кодом, чем что-либо еще, и я надеюсь, что кто-то там может помочь отследить проблему.

У меня есть другой код, который запускает службу с помощью startService (), и я могу убедиться, что служба запущена, когда отладчик выполняет функцию onCreate () DecoderService.

Однако bindService никогда не связывается с запущенным сервисом. Это асинхронный вызов, и мне нужно ждать, пока что-то завершится?

public class ResultsActivity extends Activity {

protected void onResume() {
    // TODO Auto-generated method stub
    super.onResume();

    Intent decoderIntent = new Intent(this,DecoderService.class);
    _isBound = bindService(decoderIntent,mConnection,Context.BIND_AUTO_CREATE);
    _textView.start(_mBoundService);
}

private boolean _isBound = false;
private DecoderService _mBoundService;

private ServiceConnection mConnection = new ServiceConnection() {
    public void onServiceConnected(ComponentName className, IBinder service) {
        _mBoundService = ((DecoderService.LocalBinder)service).getService();
    }

    public void onServiceDisconnected(ComponentName className)
        _mBoundService = null;
    }
};
}

    public class DecoderService extends Service {


protected void onHandleIntent(Intent intent) {
    // TODO Auto-generated method stub
    _numCompleted = 5;
    _numTotal = 100;
}

protected int _numCompleted = 0;
protected int _numTotal = 0;


public void onCreate() {
    onHandleIntent(null);
}


@Override
public IBinder onBind(Intent intent) {
    return mBinder;
}


// This is the object that receives interactions from clients.  See
// RemoteService for a more complete example.
private final IBinder mBinder = new LocalBinder();

public class LocalBinder extends Binder {
    DecoderService _ref = null;
    public LocalBinder()
    {
        _ref = DecoderService.this;
    }
    DecoderService getService() {
        return DecoderService.this;
    }

}
}

1 Ответ

4 голосов
/ 29 июля 2010

Это асинхронный вызов, и я придется ждать чего-то завершить?

Связывание не готово, пока onServiceConnected() не будет вызван для вашего ServiceConnection объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...