W mojej aplikacji mam następujący scenariusz. W mojej aplikacji nie ma interfejsu użytkownika; zamiast tego istnieje Usługa, która uruchamia się podczas rozruchu i będzie działać w sposób ciągły.
Jak mogę skonfigurować plik manifestu bez głównego działania? Czy mogę uruchomić moją aplikację bez żadnej aktywności? Po uruchomieniu mojej aplikacji usługa powinna się rozpocząć. czy to możliwe?
Nie chcę wykonywać półprzezroczystego działania, aby uruchomić usługę.
Odpowiedzi:
Powiedziałeś, że nie chcesz używać przezroczystego działania, ale wydaje się, że jest to najlepszy sposób:
Theme.Translucent.NoTitleBar
.setContentView()
.onCreate()
rozpocznij usługę zstartService()
.finish()
po uruchomieniu usługi.Innymi słowy, Twoja aktywność nie musi być widoczna; może po prostu upewnić się, że usługa jest uruchomiona, a następnie zakończyć, co brzmi tak, jak chcesz.
Zdecydowanie polecam wyświetlenie przynajmniej powiadomienia Toast wskazującego użytkownikowi, że uruchamiasz Usługę lub że jest ona już uruchomiona. To bardzo złe doświadczenie użytkownika, gdy ikona programu uruchamiającego wydaje się nic nie robić po jej naciśnięciu.
źródło
Tak, możesz to zrobić, po prostu tworząc plik,
BroadcastReceiver
który wywołuje twójService
podczas uruchamiania aplikacji. Oto pełna odpowiedź udzielona przeze mnie.Android - Uruchom usługę podczas rozruchu
Jeśli nie chcesz żadnej ikony / programu uruchamiającego dla siebie Aplikacja, możesz to również zrobić, po prostu nie twórz żadnej aktywności za pomocą
<intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter>
Po prostu zadeklaruj,
Service
jak zwykle.źródło
Service
rozruchu, ale chce wiedzieć, jak nie mieć głównegoActivity
, ale po prostu upewnij się, żeService
działa, gdy ikona programu uruchamiającego jest naciśnięta.Powodem tworzenia aplikacji bez żadnej aktywności lub usługi może być utworzenie aplikacji z widżetem ekranu głównego, której nie trzeba uruchamiać.
Po rozpoczęciu projektu nie twórz żadnych działań. Po utworzeniu projektu po prostu naciśnij Uruchom. Studio Android powie
No default activity found
.Kliknij Edytuj konfigurację (z menu Uruchom ) iw części opcji uruchamiania ustaw wartość Uruchom na Nic . Następnie kliknij OK i uruchom aplikację.
( Ponieważ nie ma aktywności programu uruchamiającego, żadna aplikacja nie będzie wyświetlana w menu Aplikacje ).
źródło
Android Studio w wersji 2.3.0
Usługę bez aktywności głównej można utworzyć, wykonując kilka prostych kroków. Będziesz mógł zainstalować tę aplikację za pośrednictwem Android Studio i debugować ją jak zwykłą aplikację.
Najpierw utwórz projekt w Android Studio bez aktywności. Następnie utwórz klasę Service i dodaj usługę do pliku 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 menu rozwijanym obok przycisku „Uruchom” (zielona strzałka) przejdź do opcji „edytuj konfiguracje” iw obszarze „Opcje uruchamiania” wybierz „Nic”. Umożliwi to zainstalowanie usługi bez narzekania na brak aktywności głównej w Android Studio.
Po zainstalowaniu usługa NIE będzie działać, ale będzie można ją uruchomić za pomocą tego polecenia powłoki adb ...
Mogę sprawdzić, czy działa z ...
ps | grep whatever
Jeszcze nie próbowałem, ale prawdopodobnie Android Studio może również automatycznie uruchomić usługę. Można to zrobić w tym menu „Edytuj konfiguracje”.
źródło