基本的 IntentService 示例

抽象類 IntentService 是服務的基類,它在後臺執行,沒有任何使用者介面。因此,為了更新 UI,我們必須使用接收器,它可以是 BroadcastReceiverResultReceiver

  • 如果你的服務需要與想要監聽通訊的多個元件通訊,則應使用 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() 方法中的約束。