Android實現(xiàn)Service重啟的方法
本文實例講述了Android實現(xiàn)Service重啟的方法。分享給大家供大家參考。具體如下:
做APP的時候,我們可能需要一個后臺服務(wù)一直在運行著,得用到Service組件。
但服務(wù)可能在如下情況被殺死:
A.用戶手動點擊停止。
B.采用第三方軟件(比如360手機衛(wèi)士)進行清理,當(dāng)然這樣子除了系統(tǒng)服務(wù)外,其他的進程肯定也會被殺死,除非跟手機廠商聯(lián)系。
這時候可能需要重啟該服務(wù),上網(wǎng)看了半天,有提到用Timer、AlarmManager去實現(xiàn)間歇性的發(fā)送廣播啟動Service(注冊的廣播接收后,啟動Service),我實現(xiàn)了下,發(fā)現(xiàn)還是在B情況下還是不能滿足。
我手機上裝了一個卡卡司機助手,發(fā)現(xiàn)在B情況下,殺掉后,服務(wù)過段時間自動啟動了,觀察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的廣播后,進行服務(wù)的啟動的。
android.intent.action.USER_PRESENT對應(yīng)的手機屏幕的解鎖,一般用戶哪能有病沒病的讓手機一直在喚醒狀態(tài),所以我們可以通過接收此廣播進行服務(wù)的重啟,保持Service一直在后臺運行。
在AndroidManifest.xml文件里注冊該廣播就OK,順帶貼下手機開機發(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 } }
希望本文所述對大家的Android程序設(shè)計有所幫助。
相關(guān)文章
Android使用Item Swipemenulistview實現(xiàn)仿QQ側(cè)滑刪除功能
大家都用過QQ,肯定有人好奇QQ滑動刪除Item的效果是怎樣實現(xiàn)的,其實我們使用Swipemenulistview就可以簡單的實現(xiàn)。這篇文章主要介紹了Android使用ItemSwipemenulistview實現(xiàn)仿QQ側(cè)滑刪除功能,需要的朋友可以參考下2017-02-02Android編程實現(xiàn)項目中異常捕獲及對應(yīng)Log日志文件保存功能
這篇文章主要介紹了Android編程實現(xiàn)項目中異常捕獲及對應(yīng)Log日志文件保存功能,涉及Android異常處理、日志讀寫及權(quán)限控制等相關(guān)操作技巧,需要的朋友可以參考下2018-02-02Android Studio中Run按鈕是灰色的快速解決方法
這篇文章主要介紹了Android Studio中Run按鈕是灰色的快速解決方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2018-03-03