2010-12-17 28 views
8

我想在APK開始服務。我可以開始沒有活動或接收器的服務嗎?

我試過如下使用:

<application android:icon="@drawable/icon" android:label="@string/app_name"> 
     <service android:name =".TestServcie"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </service> 
    </application> 

任何想法?
感謝

+0

所以我把它它不工作? (不是因爲你拼寫服務錯誤?)什麼都發生了?順便說一句,你是否計劃任何反饋給用戶該服務開始? – EboMike 2010-12-17 05:44:30

回答

11

你就是不行。

創建一個簡單的活動,其啓動該服務,只是提供了一些反饋給用戶(告訴他們的服務已經啓動,例如),並設置與主/ LAUNCHER原意,即活動。

+3

有人刪除這個可怕的和無益的答案,並把另一個放在上面。 – Arijoon 2014-09-02 14:15:44

+0

@Arijoon:你如何提出「服務」開始?從Android v3.x開始,除非用戶從啓動程序手動啓動應用程序,否則無法啓動任何應用程序組件 - 這意味着啓動一個「活動」。最重要的是,在沒有用戶許可的情況下啓動應用程序組件將是一個糟糕的設計。另外,其他答案可能是正確的,但除非用戶啓動了「活動」(因此表明他們允許),否則它將失敗。如果應用程序被手動停止並且不再手動重新啓動或者應用程序安裝在SD卡上,它也會失敗。 – Squonk 2014-09-02 16:16:20

+1

安裝後只需運行一次**。此後,您可以在啓動時啓動服務。你的答案的第一部分是正確的,但其餘部分沒有幫助。像Viber這樣的許多服務在後臺啓動時運行,而無需詢問用戶。 – Arijoon 2014-09-03 08:14:14

29

你可以編寫BroadcastReceiver並在意圖調用後運行服務。例如在引導設備或其他您需要的意圖之後。

<receiver android:name=".StartupReceiver"> 
    <intent-filter> 
    <action android:name="android.intent.action.BOOT_COMPLETED"/> 
    <category android:name="android.intent.category.HOME"/> 
    </intent-filter> 
</receiver> 
+0

我認爲這個答案是正確的。它描述瞭如何在用戶沒有采取行動的情況下啓動一項服務,我認爲這就是作者所期待的。 – Undo 2013-01-13 22:32:48

+0

就像我Google一樣,用戶確實需要運行應用程序才能註冊接收者。 – Pijusn 2013-01-17 08:53:01

+1

在這種情況下,接收者通過AndroidManifest.xml進行註冊。換句話說,它們是在用戶安裝應用程序時註冊的。 – Qlimax 2013-08-02 14:32:51

相關問題