基本的 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() 方法中的约束。