Android實(shí)現(xiàn)Service重啟的方法
本文實(shí)例講述了Android實(shí)現(xiàn)Service重啟的方法。分享給大家供大家參考。具體如下:
做APP的時(shí)候,我們可能需要一個(gè)后臺(tái)服務(wù)一直在運(yùn)行著,得用到Service組件。
但服務(wù)可能在如下情況被殺死:
A.用戶手動(dòng)點(diǎn)擊停止。
B.采用第三方軟件(比如360手機(jī)衛(wèi)士)進(jìn)行清理,當(dāng)然這樣子除了系統(tǒng)服務(wù)外,其他的進(jìn)程肯定也會(huì)被殺死,除非跟手機(jī)廠商聯(lián)系。
這時(shí)候可能需要重啟該服務(wù),上網(wǎng)看了半天,有提到用Timer、AlarmManager去實(shí)現(xiàn)間歇性的發(fā)送廣播啟動(dòng)Service(注冊(cè)的廣播接收后,啟動(dòng)Service),我實(shí)現(xiàn)了下,發(fā)現(xiàn)還是在B情況下還是不能滿足。
我手機(jī)上裝了一個(gè)卡卡司機(jī)助手,發(fā)現(xiàn)在B情況下,殺掉后,服務(wù)過(guò)段時(shí)間自動(dòng)啟動(dòng)了,觀察Log打印。
07-12 14:12:15.735: I/HadesLee(1456): Receiver,action=android.intent.action.USER_PRESENT
07-12 14:12:15.745: I/HadesLee(1456): KakaService.onCreate....
07-12 14:12:15.745: I/HadesLee(1456): KakaService.onStartCommand,flags=2,startId=1
07-12 14:12:15.755: I/ActivityManager(218): Start proc com.miui.weather2 for broadcast com.miui.weather2/.service.ServiceUpdateWeather: pid=1484 uid=10060 gids={3003}
07-12 14:12:15.755: I/HadesLee(1456): nextRemindTime=null
看到此Log,發(fā)現(xiàn)它是收到android.intent.action.USER_PRESENT的廣播后,進(jìn)行服務(wù)的啟動(dòng)的。
android.intent.action.USER_PRESENT對(duì)應(yīng)的手機(jī)屏幕的解鎖,一般用戶哪能有病沒(méi)病的讓手機(jī)一直在喚醒狀態(tài),所以我們可以通過(guò)接收此廣播進(jìn)行服務(wù)的重啟,保持Service一直在后臺(tái)運(yùn)行。
在AndroidManifest.xml文件里注冊(cè)該廣播就OK,順帶貼下手機(jī)開(kāi)機(jī)發(fā)送的廣播。
<receiver android:name="com.agilemobi.comac.collect.android.services.UserPresentReceiver" > <intent-filter> <action android:name="android.intent.action.USER_PRESENT" /> </intent-filter> </receiver> <receiver android:name="com.agilemobi.comac.collect.android.services.BootReceiver" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <category android:name="android.intent.category.HOME" /> </intent-filter> </receiver>
public class UserPresentReceiver extends BroadcastReceiver {
private static final String TAG = "UserPresentReceiver";
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Log.e(TAG, "receive broadcast");
// do something
}
}
希望本文所述對(duì)大家的Android程序設(shè)計(jì)有所幫助。
相關(guān)文章
Android中二維碼的掃描和生成(使用zxing庫(kù))
ZXing是一個(gè)開(kāi)放源碼的,用Java實(shí)現(xiàn)的多種格式的1D/2D條碼圖像處理庫(kù),它包含了聯(lián)系到其他語(yǔ)言的端口,下面這篇文章主要給大家介紹了關(guān)于Android中二維碼掃描和生成的相關(guān)資料,主要使用的zxing庫(kù),需要的朋友可以參考下2022-09-09
Android中RecyclerView的item寬高問(wèn)題詳解
RecyclerView出現(xiàn)已經(jīng)有一段時(shí)間了,相信大家肯定不陌生了,下面這篇文章主要給大家介紹了關(guān)于Android中RecyclerView的item寬高問(wèn)題的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-08-08
Android.permission.MODIFY_PHONE_STATE權(quán)限問(wèn)題解決辦法
這篇文章主要介紹了Android.permission.MODIFY_PHONE_STATE權(quán)限問(wèn)題解決辦法的相關(guān)資料,這里提供了幾種方法幫助大家解決這種問(wèn)題,需要的朋友可以參考下2016-12-12
Android ServiceManager的啟動(dòng)和工作原理
這篇文章主要介紹了Android ServiceManager的啟動(dòng)和工作原理,幫助大家更好的理解和學(xué)習(xí)使用Android開(kāi)發(fā),感興趣的朋友可以了解下2021-03-03
Android 可拖動(dòng)的seekbar自定義進(jìn)度值
這篇文章主要介紹了Android 可拖動(dòng)的seekbar自定義進(jìn)度值的相關(guān)資料,有需要的朋友參考下2016-04-04
Android 軟鍵盤彈出隱藏?cái)D壓界面等各種問(wèn)題小結(jié)
這篇文章主要介紹了Android 軟鍵盤彈出隱藏?cái)D壓界面等各種問(wèn)題的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧2016-11-11
Android設(shè)置TextView首行縮進(jìn)示例代碼
使用過(guò)word的都會(huì)知道,在文字排版的時(shí)候經(jīng)常要設(shè)置首行縮進(jìn),這樣才會(huì)使排版更整齊,那么在Android中當(dāng)需要設(shè)置首行縮進(jìn)的時(shí)候該腫么辦呢,下面一起來(lái)看看。2016-08-08
Android編程實(shí)現(xiàn)自定義手勢(shì)的方法詳解
這篇文章主要介紹了Android編程實(shí)現(xiàn)自定義手勢(shì)的方法,結(jié)合實(shí)例形式分析了Android自定義手勢(shì)的功能、相關(guān)函數(shù)與具體實(shí)現(xiàn)步驟,需要的朋友可以參考下2016-10-10
淺談android性能優(yōu)化之啟動(dòng)過(guò)程(冷啟動(dòng)和熱啟動(dòng))
本篇文章主要介紹了淺談android性能優(yōu)化之啟動(dòng)過(guò)程(冷啟動(dòng)和熱啟動(dòng)) ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-08-08

