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