Определить доступность сервиса из Activity's onCreate

1

Внутри onCreate внутри Activity я хотел бы узнать, доступен ли и работает ли Service в другом приложении (которое я также пишу). Проблема с AIDL заключается в том, что синхронной опции нет. Я бы хотел, чтобы моя активность действительно ожидала, доступна ли Service и действует соответственно, если это не так.

Лучший ответ, который я придумал, заключается в том, чтобы служба открыла сокет TCP и чтобы Activity попыталась подключиться к нему. Если это удастся, то Activity onCreate будет знать, что услуга доступна. Однако в лучшем случае это kludge.

Итак, в нижней строке: как моя активность onCreate синхронно проверяет, доступна ли внешняя Service и предпринимает действия перед возвратом из подпрограммы onCreate?

Теги:
android-service

1 ответ

3
Лучший ответ

Вы можете прокручивать список, возвращенный общедоступным List<ActivityManager.RunningServiceInfo> getRunningServices (int maxNum). Каждая ActivityManager.RunningServiceInfo содержит необходимую информацию

Проверьте API здесь и здесь

ActivityMAnager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
ArrayList<ActivityManager.RunningServiceInfo> rsiList = am.getRunningServices (999);
boolean found = null;
for (ActivityManager.RunningServiceInfo rsi: rsiList) {
    if (rsi.service.getPackageName().equals("MYPACKAGE") {
       found = true;
       break;
    }
}
if (found) {
    // do whatever
} else {
    // alternative
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню