Android實現Service重啟的方法

來源:互聯網
上載者:User

Android實現Service重啟的方法

   本文執行個體講述了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,順帶貼下手機開機發送的廣播。

  ?

1

2

3

4

5

6

7

8

9

10

11

<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>

  ?

1

2

3

4

5

6

7

8

9

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程式設計有所協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.