Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android實現Service重啟的方法

Android實現Service重啟的方法

編輯:關於Android編程

本文實例講述了Android實現Service重啟的方法。分享給大家供大家參考。具體如下:

做APP的時候,我們可能需要一個後台服務一直在運行著,得用到Service組件。

但服務可能在如下情況被殺死:

A.用戶手動點擊停止。
B.采用第三方軟件(比如360手機衛士)進行清理,當然這樣子除了系統服務外,其他的進程肯定也會被殺死,除非跟手機廠商聯系。

這時候可能需要重啟該服務,上網看了半天,有提到用Timer、AlarmManager去實現間歇性的發送廣播啟動Service(注冊的廣播接收後,啟動Service),我實現了下,發現還是在B情況下還是不能滿足。

我手機上裝了一個卡卡司機助手,發現在B情況下,殺掉後,服務過段時間自動啟動了,觀察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,發現它是收到android.intent.action.USER_PRESENT的廣播後,進行服務的啟動的。

android.intent.action.USER_PRESENT對應的手機屏幕的解鎖,一般用戶哪能有病沒病的讓手機一直在喚醒狀態,所以我們可以通過接收此廣播進行服務的重啟,保持Service一直在後台運行。

在AndroidManifest.xml文件裡注冊該廣播就OK,順帶貼下手機開機發送的廣播。

<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程序設計有所幫助。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved