Я написал библиотеку, подключающуюся к удаленной службе, которая вызывает
return context.bindService(bindIntent,
serviceConnectionSmartCard, Context.BIND_AUTO_CREATE);
с контекстом является ApplicationContext и serviceConnectionSmartCard, являющийся моим пользовательским ServiceConnection
public void onServiceConnected(ComponentName className, IBinder service) {
synchronized (this) {
if (waitForConnection) {
waitForConnection = false;
} else {
return;
}
}
if(service == null) {
Log.w(TAG, "Binding to Service failed.");
smartCardReaderService.onConnected(null);
} else {
if (D) Log.d(TAG, "Attached to Server.");
IConnectionService connectionService = IConnectionService.Stub.asInterface(service);
smartCardReaderService.onConnected(connectionService);
}
}
И на стороне обслуживания у меня есть следующее в onBind():
public IBinder onBind(Intent intent) {
if (D) Log.d(TAG, "onBind");
android.os.Debug.waitForDebugger();
return iConnectionService.asBinder();
}
iConnectionService - это реализация моего файла AIDL.
Теперь моя проблема: он работает до тех пор, пока я отлаживаю службу (устанавливаю точку останова в операторе return), однако она не работает, когда я отлаживаю действие вместо этого. Служба ServiceConnection никогда не возвращается.
Кстати: я звоню
startActivityForResult(...);
вызов удаленного действия в Activity.onCreate. Это может быть проблема? Я просто не знаю, как отлаживать такое странное поведение...
Заранее спасибо.
Решение было довольно простым. Просто раскованный
android.os.Debug.waitForDebugger();
так как он будет молча ждать отладчика, если он не будет запущен приложением отладки, чего никогда не произойдет.