У меня есть служба Android, которая может быть недоступна в какой-то момент.
Если моя активность пытается вызвать ее, я хочу знать, доступна ли служба.
Код моей активностиis:
boolean bound = context.bindService(new Intent(SERVICE_NAME), mConnection, Context.BIND_AUTO_CREATE);
if (!bound) {
// ....
}
Мой сервисный код:
@Override
public void onCreate() {
mServiceEnabled = false;
// calling some C code
boolean readEnabled = JniCommunicator.enableRead();
if (!readEnabled) {
return;
}
// potentially return without reaching that point
mServiceEnabled = true;
}
public IBinder onBind(Intent intent) {
Log.d("Service", mServiceEnabled ? "enabled" : "DISABLED");
return mServiceEnabled ? serviceBinder : null;
}
Как я понял, возврат null
не будет связывать сервис, и моя активность сможет его увидеть, ноМоя bound
переменная всегда true
.И мой mConnection
обратный вызов никогда не вызывается.
Что не так?Обратите внимание, что служба и действие находятся в двух отдельных APK, подписанных двумя отдельными ключами.Я не могу использовать статическое логическое значение для решения этой проблемы.