2013-04-10 173 views
1

在AndroidManifest.xml中,我將BroadcastReceiver註冊到「android.intent.action.BOOT_COMPLETED」事件中。 這會在每次Android設備啓動時啓動服務。應用啓動時的Android啓動系統服務

... 
     <receiver android:name="MySystemScheduleReceiver" > 
      <intent-filter> 
       <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      </intent-filter> 
     </receiver> 
... 

但是,我希望系統服務在應用程序安裝後立即啓動,無需重新啓動設備。

當應用程序啓動時,是否可以使用系統事件? 或者我需要設置自定義事件嗎?

我應該修改我的清單文件以類似

... 
     <receiver android:name="MySystemScheduleReceiver" > 
      <intent-filter> 
       <action android:name="android.intent.action.BOOT_COMPLETED" /> 
       <action android:name="com.myapp.StartSysService" /> 
      </intent-filter> 
     </receiver> 
... 

,然後從我的主要活動有類似

... 
     Intent intent = new Intent(); 
     intent.setAction("com.myapp.StartSysService"); 
     sendBroadcast(intent); 
... 

如果是這樣,我應該使用哪一種方法推出的服務? (的onCreate,...的onResume)

感謝

+0

「不過,我想系統服務的應用程序安裝後立即啓動,而不需要重新啓動設備」 - 系統服務部分固件,而不是應用程序。請編輯您的問題,以便**完整且準確**關於您所指的內容。 – CommonsWare 2013-04-10 16:24:57

+0

你有任何的GUI活動?如果是的話,你可以像這樣從你的活動開始** onCreate **方法的服務:'Intent service = new Intent(); service.setAction( 「com.myapp.MyService」); context.startService(service);' – 2013-04-10 16:42:15

+0

我將sendBroadcast調用放在onCreate(主要的GUI活動)中,它似乎工作正常。謝謝。 – user1936810 2013-04-10 19:02:35

回答

4

你也可以繼承的應用程序,它具有的onCreate()回調。你可以在那裏開始你的服務。

public class MyApplication extends Application { 
    public void onCreate() { 
     // start your service 
    } 
} 

在你清單的<application>標籤,添加android:name="MyApplication"

相關問題