如果您想使用服务来执行不同的操作,那么声明一个意图过滤器将帮助您的服务匹配您想要执行的不同操作。
该示例将更好地解释。
假设您在清单文件中有以下声明:
<service
android:name="MyService" >
<intent-filter>
<action android:name="com.x.y.DOWNLOAD_DATA" />
<action android:name="com.x.y.UPLOAD_DATA" />
</intent-filter>
</service>
然后在你的IntentService
你可以像这样过滤这些操作:
public class MyService extends IntentService {
public MyService() {
super("MyService");
}
@Override
protected void onHandleIntent(Intent intent) {
if(intent.getAction().equals("com.x.y.DOWNLOAD_DATA"){
//download data here
}else if(intent.getAction().equals("com.x.y.UPLOAD_DATA"){
// upload data here
}
}
}
基本上,它允许您将相同的服务用于不同的操作,而不是创建两个单独的服务。
但是,为服务声明意图过滤器并不被认为是一种好的做法,这就是文档必须说的:
注意:为确保您的应用程序安全,请始终在启动服务时使用显式意图,并且不要为您的服务声明意图过滤器。使用隐式意图启动服务是一种安全隐患,因为您无法确定哪个服务会响应该意图,并且用户无法看到哪个服务启动。