Перезапустите сервис для приложения на SD-карте, когда SD-карта перемонтирована - PullRequest
10 голосов
/ 19 октября 2010

Из-за подавляющих жалоб пользователей я решил разрешить пользователям моего приложения для Android перенести его на SD-карту согласно официальной документации . Тем не менее, основная функция моего приложения требует непрерывной работы фоновой службы. Когда кто-то, кто переместил мое приложение на свою SD-карту, подключит свою SD-карту по какой-либо причине, моя фоновая служба будет уничтожена.

Это все в порядке, если я могу перезапустить службу при первой же возможности. К сожалению, несмотря на руководство install-location , в котором утверждается, что я могу использовать Broadcast Intent ACTION_EXTERNAL_APPLICATIONS_AVAILABLE, чтобы определить, когда SD-карта перемонтируется локально, документация для самого этого флага обсуждение этой группы новостей и мое собственное тестирование показывают, что эта трансляция не доставляется приложениям, которые становятся доступными. Только приложения, которые не были перемещены на SD-карту, получают намерение вещания.

Есть ли способ перезапустить мою фоновую службу, не дожидаясь, пока пользователь откроет мое приложение после переустановки SD-карты?

1 Ответ

7 голосов
/ 19 октября 2010

Ненадежно. Вы можете подключиться к трансляции без разрешения Intents (например, ACTION_SCREEN_OFF), которая должна в конечном итоге сработать и таким образом получить контроль. Как указывает г-жа Хэкборн, правильный ответ для ACTION_EXTERNAL_APPLICATIONS_AVAILABLE должен быть исправлен. Вы также можете увидеть, происходит ли какая-либо трансляция, связанная с SD-картой, после того, как внешние приложения становятся доступны (например, ACTION_MEDIA_MOUNTED), хотя я ожидаю, что все они пройдут до того, как станет доступно внешнее приложение.

...