簡體   English   中英

從應用開始啟動服務,而不是活動

[英]Launch service from app start, not activity

我想在啟動應用程序而不是活動時啟動Service ; 然后說服務將啟動an Activity 我需要這樣做,因為我的應用程序需要始終運行,當我說我總是說我總是這樣。 我設法避免操作系統殺死我的應用程序的唯一方法是啟動一個服務作為Sticky,如果Android殺死我的活動或我的服務我會立即重新啟動它們。

我發現了這個問題,但最重要的答案似乎相當笨拙,任何人都有更好的主意?

PS:我知道這看起來不是一個非常友好的應用程序,但這是一個非常具體的研究方案,它不適合普通用戶,即手機僅用於此目的; 但是,即使內存專用於我的應用程序,Android也時不時地殺死它...我對Android的聲稱嚴格的內存管理方案的任何懷疑現在都消失了。

一般來說, Activity不必顯示任何UI - 它通常會顯示,但它不是強制性的 因此,您只需將應用程序的起點設置為“隱形”活動即可。 無形的意思是主題為

android:theme="@android:style/Theme.NoDisplay"

或者只是你的代碼不會執行任何setContentView() ,一旦你的onCreate()完成了它的工作,你就開始另一個活動並用finish()終止這個活動 - 並且沒有UI會從該活動中彈出 - 這樣你就可以很容易從在活動子類中完成工作中獲益(對於某些任務可能更簡單)並且仍然不需要任何UI:

public void onCreate(Bundle bundle) {
   super.onCreate(bundle);

   // [... do your job here...]

   // we're done, so let's jump to another acitivity
   // this can be skipped if you do not want to jump anywhere

   Intenet intent = new Intent(....)
   ...

   try {
      startActivity( intent );

      // finish him
      finish();

   } catch ( Exception e ) {
      e.printStackTrace();
   }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM