【Android】開機自啟動Service

來源:互聯網
上載者:User

之前我們有篇關於介紹 Android 如何?開機自啟動,不過都寫的是關於如何啟動 Activity,本篇文章將介紹如何啟動 Service。

先附上之前文章的連結,以便參考:【Android】開機自啟動。

Service 的啟動相比 Acitivty 而言較為繁瑣,其實都是通過別的類去調用被啟動類,只不過可能 Activity 大家更為熟悉,Service 比較陌生吧。

不瞭解 Android Service 的童鞋可以先參考下【Android】Service 生命週期 和 【Android】Service學習之本地服務 兩篇文章。

下面回到正題,看看 Service 是如何?自啟動的。

和自啟動 Activity 一樣,我們也先需要靜態註冊一個廣播。

隨後,建立一個繼承於 BroadcastReveiver 的啟動類。

context.startService(new Intent("cn.etzmico.Etzmico_AutoRunService")); // 調用 Service

調用/啟動一個 Service 比 啟動一個 Activity 要容易的多。intent中的參數是一個“標籤”,詳情下面的內容會介紹到。

在 Manifest.xml 靜態註冊。

 <receiver android:name="cn.etzmico.autorunservice.BootReceiver" >            <intent-filter >                <action android:name="android.intent.action.BOOT_COMPLETED" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </receiver>

同樣,需要加入許可權。

 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" >    </uses-permission>

下面就來看 Service 了。

建立一個繼承於 Service 的類。為了驗證,我們可以在 onCreate() 方法中,列印一句話。

這裡簡單的說下 Service 的生命週期。

Service 也有生命週期,也有 onCrate() 等……不過 Service 還有 onStart() 和 onBind() 。

onCreate() 和 onStart() 的區別是:

    onCreate() 只有在首次調用 Service 時調用。

    onStart()每次調用 Service 時均調用,首次調用 Service 時也不例外。

    onBind() 在bindService() 時調用(本文不涉及)。

因此我們可以根據自己所需要的,在 onCreate() , onStart() 以及 onBind() 中寫入方法。

另外,Service 也是需要聲明的。

我們都知道,當建立 Activity 的時候,我們需要在 Manifest.xml 中聲明, Service 亦然如此,不過 Service 與之不同的是,每個 Service 都需要添加一個“標籤”,這個標籤在一個工程中要是唯一的,用於讓系統知道我們需要調用的是哪個 Service。

 <service android:name="cn.etzmico.autorunservice.Etzmico_AutoRunService" >            <intent-filter >                <action android:name="cn.etzmico.Etzmico_AutoRunService" />                <category android:name="android.intent.category.default" />            </intent-filter>        </service>

intent-filter 的 actiong android:name 中的內容就是“標籤”了。如果我們想啟動的是這個 Service,那麼在廣播類中 startService() 方法中 intent 的參數就是這個“標籤”;否則啟動服務時會提示new Intent找不到"cn.etzmico.Etzmico_AutoRunService"(引號中具體內容視當時情況而定,即 startService() 時 intent 的參數)。

工程資源:http://download.csdn.net/detail/etzmico/4110913

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.