2012-06-06 12 views
57

Mam scenariusz w mojej aplikacji. Nie ma interfejsu użytkownika w mojej aplikacji, zamiast tego istnieje usługa, która uruchamia się po uruchomieniu i będzie nieprzerwanie działać.Uruchamianie aplikacji Android bez głównej aktywności i uruchamianie usługi po uruchomieniu aplikacji

Jak mogę skonfigurować mój plik manifestu bez głównej aktywności? Czy mogę uruchomić moją aplikację bez żadnych działań? Po uruchomieniu mojej aplikacji powinna rozpocząć się moja usługa. Czy jest to możliwe w jakikolwiek sposób? Nie chcę wykonywać półprzezroczystych czynności, aby uruchomić usługę.

Z góry dziękuję !!!

+0

przyjrzeć się tej [Pytanie] [1] [1]: http://stackoverflow.com/questions/4468006/can-i-start-a-service-without-activity -lub-odbiornik –

Odpowiedz

92

Mówiłeś, że nie chcesz korzystać z półprzezroczystego aktywny, ale to wydaje się być najlepszym sposobem, aby to zrobić:

  1. W swoim manifeście, ustawić motyw aktywny do Theme.Translucent.NoTitleBar.
  2. Nie przejmuj się układem swojej aktywności i nie dzwoń pod numer setContentView().
  3. W usłudze onCreate() uruchom usługę pod numerem startService().
  4. Po uruchomieniu usługi zakończ działanie z finish().

Innymi słowy, Twoja aktywność nie musi być widoczna; może po prostu upewnić się, że usługa jest uruchomiona, a następnie wyjść, co brzmi jak to, co chcesz.

Gorąco polecam pokazywać co najmniej numer Toast notification wskazujący użytkownikowi, że uruchamiasz usługę lub że jest ona już uruchomiona. Korzystanie z ikony programu uruchamiającego, która wydaje się nic nie robić po naciśnięciu, jest bardzo niekorzystne dla użytkownika.

+1

daje mi pusty ekran po uruchomieniu aplikacji. Nie było tak ... – Meher

+1

@meher Właśnie przetestowałem to i zadziałało idealnie dla mnie - moja usługa zaczęła się i nie widziałem żadnej aktywności , nawet na chwilę. Opublikuj zawartość swojego działania onCreate(), a my powinniśmy być w stanie ustalić, co jest nie tak. –

+0

Gdy zainstalowałem aplikację po raz pierwszy, widzę aktywność uruchomioną i znikającą w ciągu sekundy. – Meher

23

Tak, możesz to zrobić, po prostu tworząc BroadcastReceiver, który wywołuje Service podczas uruchamiania aplikacji. Oto pełna odpowiedź udzielona przeze mnie.
Android - Start service on boot

Jeśli nie chcesz, każdy ikona/wyrzutnia dla ciebie aplikacji można zrobić również, po prostu nie tworzą żadnej aktywności ze

<intent-filter> 
    <action android:name="android.intent.action.MAIN" /> 
    <category android:name="android.intent.category.LAUNCHER" /> 
</intent-filter> 

Wystarczy zadeklarować Service deklarowanego normalnie.

+2

Wygląda na to, że pytający jest w porządku przy uruchamianiu 'usługi' przy starcie, ale chce wiedzieć, jak nie mieć głównego' Activity', ale po prostu upewnij się, że 'Service' działa po naciśnięciu ikony launchera. –

+0

Też dodałem. –

+2

Wygląda jednak na to, że chce się ikony programu uruchamiającego, która po naciśnięciu zapewnia działanie usługi. Twoja sugestia po prostu pozbywa się ikony programu uruchamiającego. –

1

Android Studio Wersja 2.3

Można utworzyć usługę bez podstawowej działalności, wykonując kilka prostych czynności. Będziesz mógł zainstalować tę aplikację za pomocą Android Studio i debugować ją jak normalną aplikację.

Najpierw utwórz projekt w Android Studio bez aktywności. Następnie utworzyć klasę usług i dodać usługę do AndroidManifest.xml

<application android:allowBackup="true" 
    android:label="@string/app_name" 
    android:icon="@mipmap/ic_launcher" 
    android:roundIcon="@mipmap/ic_launcher_round" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <service android:name="com.whatever.myservice.MyService"> 
     <intent-filter> 
      <action android:name="com.whatever.myservice.MyService" /> 
     </intent-filter> 
    </service> 
</application> 

Teraz, w rozwijanej obok przycisku „Run” (zielona strzałka), przejdź do " edytuj konfiguracje "iw" Opcjach uruchamiania "wybierz" Nic ". Umożliwi to zainstalowanie Usługi bez Androida Studio narzekającego na brak aktywności głównej.

Raz zainstalowany, usługa NIE zostanie uruchomiony, ale będzie można go uruchomić z tego polecenia adb shell ...

am startservice -n com.whatever.myservice/.MyService 

można sprawdzić to działa z ...

ps | grep whatever 

Jeszcze nie próbowałem, ale prawdopodobnie możesz też automatycznie uruchomić usługę Android Studio. Można to zrobić w menu "Edycja konfiguracji".

Powiązane problemy