基本的 IntentService 示例
抽象類 IntentService
是服務的基類,它在後臺執行,沒有任何使用者介面。因此,為了更新 UI,我們必須使用接收器,它可以是 BroadcastReceiver
或 ResultReceiver
:
- 如果你的服務需要與想要監聽通訊的多個元件通訊,則應使用
BroadcastReceiver
。 - 如果你的服務只需要與父應用程式(即你的應用程式)通訊,則應使用
ResultReceiver
:。
在 IntentService
中,我們有一個關鍵方法 onHandleIntent()
,我們將在其中執行所有操作,例如,準備通知,建立警報等。
如果你想使用自己的 IntentService
,你必須按如下方式擴充套件它:
public class YourIntentService extends IntentService {
public YourIntentService () {
super("YourIntentService ");
}
@Override
protected void onHandleIntent(Intent intent) {
// TODO: Write your own code here.
}
}
可以按如下方式呼叫/啟動活動:
Intent i = new Intent(this, YourIntentService.class);
startService(i); // For the service.
startActivity(i); // For the activity; ignore this for now.
與任何活動類似,你可以將附加資訊(如繫結資料)傳遞給它,如下所示:
Intent passDataIntent = new Intent(this, YourIntentService.class);
msgIntent.putExtra("foo","bar");
startService(passDataIntent);
現在假設我們將一些資料傳遞給 YourIntentService
類。根據此資料,可以按如下方式執行操作:
public class YourIntentService extends IntentService {
private String actvityValue="bar";
String retrivedValue=intent.getStringExtra("foo");
public YourIntentService () {
super("YourIntentService ");
}
@Override
protected void onHandleIntent(Intent intent) {
if(retrivedValue.equals(actvityValue)){
// Send the notification to foo.
} else {
// Retrieving data failed.
}
}
}
上面的程式碼還說明了如何處理 OnHandleIntent()
方法中的約束。