欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android實(shí)現(xiàn)Service重啟的方法

 更新時(shí)間:2015年05月28日 16:21:01   作者:jayqean  
這篇文章主要介紹了Android實(shí)現(xiàn)Service重啟的方法,涉及Android操作Service組件實(shí)現(xiàn)服務(wù)重啟的功能,需要的朋友可以參考下

本文實(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ù)過段時(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ī)屏幕的解鎖,一般用戶哪能有病沒病的讓手機(jī)一直在喚醒狀態(tài),所以我們可以通過接收此廣播進(jìn)行服務(wù)的重啟,保持Service一直在后臺(tái)運(yùn)行。

在AndroidManifest.xml文件里注冊(cè)該廣播就OK,順帶貼下手機(jī)開機(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)文章

最新評(píng)論