2010-10-18 16 views
10

Z powodu przytłaczających skarg użytkowników postanowiłem umożliwić użytkownikom mojej aplikacji na Androida przeniesienie ich na kartę SD zgodnie z the official documentation. Jednak podstawowa funkcja mojej aplikacji wymaga nieprzerwanego działania usługi w tle. Gdy ktoś, kto przeniósł moją aplikację na swoją kartę SD, montuje swoją kartę SD z dowolnego powodu, moja usługa w tle zostanie zabita.Ponownie uruchom usługę dla aplikacji na karcie SD Po wymianie karty SD

Wszystko w porządku przeze mnie, o ile mogę ponownie uruchomić usługę przy pierwszej dostępnej okazji. Niestety, pomimo przewodnika install-location, twierdząc, że mogę użyć Broadcast Intent ACTION_EXTERNAL_APPLICATIONS_AVAILABLE do wykrycia, kiedy karta SD jest ponownie montowana lokalnie, dokumentacja tej flagi, this newsgroup discussion, i moje własne testy pokazują, że ta transmisja nie jest dostarczana do aplikacji, które stały się dostępne . Tylko aplikacje, które nie zostały przeniesione na kartę SD, uzyskują zamiar transmisji.

Czy istnieje sposób na zrestartowanie usługi w tle bez czekania, aż użytkownik otworzy aplikację po ponownym podłączeniu karty SD?

+0

Hej, Alex, mam ten sam problem. Jak udało Ci się uruchomić ponownie usługę w tle? – Spynet

Odpowiedz

7

Niezawodnie. Możesz podłączyć się do wydania bez zezwolenia Intents (np. ACTION_SCREEN_OFF), które powinno w końcu wystrzelić i uzyskać kontrolę w ten sposób. Jak wskazuje pani Hackborn, prawidłowa odpowiedź ma zostać naprawiona na ACTION_EXTERNAL_APPLICATIONS_AVAILABLE. Możesz również zobaczyć, czy niektóre transmisje związane z kartami SD mają miejsce po udostępnieniu aplikacji zewnętrznych (np. ACTION_MEDIA_MOUNTED), choć oczekiwałbym, że wszystkie te transmisje zostaną przekazane, zanim aplikacja zewnętrzna będzie dostępna.

Powiązane problemy