Android виджет - снова связать сервис, когда приложение принудительно остановлено - PullRequest
3 голосов
/ 23 декабря 2011

Это мое краткое описание моего виджета и основного приложения. Извините за мой английский (английский не мой родной язык)

У меня есть виджет музыкального проигрывателя. Когда этот виджет включен, мне нужно привязать к сервису музыкального плеера (A) основного приложения. Поскольку мы не можем связать службу в AppWidgetProvider, поэтому я запускаю локальную службу (B) в AppWidgetProvider и связываюсь с этой службой музыкального проигрывателя (A) отсюда. Кроме того, у меня также есть служба C для выполнения функции кнопок виджета.

Кажется, что все работает нормально, но когда мое основное приложение с сервисом A все принудительно остановилось (они будут перезагружаться через мгновение), я должен привязаться к A из виджета. Проблема в том, что когда основное приложение было принудительно остановлено, я не могу выполнить повторную привязку к A, поскольку контекст (я сохранял Context как глобальную переменную в AppWidgetProvider всякий раз, когда получаю контекст от onEnabled, onUpdate) равен NULL.

Мой вопрос, как насчет моей вышеупомянутой структуры виджетов? Должна ли служба B быть остановлена, когда привязка к A выполнена? Как я могу снова подключиться к сервису A, когда основное приложение и сервис a были принудительно остановлены (но они автоматически перезапустятся через мгновение).

Спасибо тебе!

1 Ответ

3 голосов
/ 28 декабря 2011

Ответь на мой вопрос

  1. Во-первых, мы можем связать Сервис из виджета, используя context.getApplicationContext().bindService(..)
  2. Когда основное приложение было принудительно остановлено, чтобы снова связать службу при onUpdate (), используйте контекст приложения MyMainApplication.Instance().getApplicationContext().bindService(..)
...