android: 使用前臺服務

9.5.1    使用前臺服務ide

 

服務幾乎都是在後臺運行的,一直以來它都是默默地作着辛苦的工做。可是服務的系統 優先級仍是比較低的,當系統出現內存不足的狀況時,就有可能會回收掉正在後臺運行的服 務。若是你但願服務能夠一直保持運行狀態,而不會因爲系統內存不足的緣由致使被回收, 就能夠考慮使用前臺服務。前臺服務和普通服務最大的區別就在於,它會一直有一個正在運 行的圖標在系統的狀態欄顯示,下拉狀態欄後能夠看到更加詳細的信息,很是相似於通知的 效果。固然有時候你也可能不單單是爲了防止服務被回收掉才使用前臺服務的,有些項目因爲特殊的需求會要求必須使用前臺服務,好比說墨跡天氣,它的服務在後臺更新天氣數據的同時,還會在系統狀態欄一直顯示當前的天氣信息,如圖 9.11 所示。學習

圖   9.11this

 

那麼咱們就來看一下如何才能建立一個前臺服務吧,其實並不複雜,修改 MyService 中 的代碼,以下所示:對象

 

public class MyService extends Service {blog

……內存

@Overrideget

public void onCreate() {it

super.onCreate();io

Notification notification = new Notification(R.drawable.ic_launcher, "Notification comes", System. currentTimeMillis());class

Intent notificationIntent = new Intent(this, MainActivity.class);

PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);

notification.setLatestEventInfo(this, "This is title", "This is content", pendingIntent);

startForeground(1, notification);

Log.d("MyService", "onCreate executed");

 

 

 

}

……

}

能夠看到,這裏只是修改了 onCreate()方法中的代碼,相信這部分的代碼你會很是眼熟。 沒錯!這就是咱們在上一章中學習的建立通知的方法。只不過此次在構建出 Notification 對 象後並無使用 NotificationManager 來將通知顯示出來,而是調用了 startForeground()方法。 這個方法接收兩個參數,第一個參數是通知的 id,相似於 notify()方法的第一個參數,第二 個參數則是構建出的 Notification 對象。調用 startForeground()方法後就會讓 MyService 變成 一個前臺服務,並在系統狀態欄顯示出來。

如今從新運行一下程序,並點擊 Start Service 或 Bind Service 按鈕,MyService 就會之前 臺服務的模式啓動了,而且在系統狀態欄會顯示一個通知圖標,下拉狀態欄後能夠看到該通 知的詳細內容,如圖 9.12 所示。

圖   9.12

相關文章
相關標籤/搜索