您的位置:首页 > 移动开发 > Android开发

Android IntentService 的使用

2014-05-30 17:23 483 查看
        Android应用大部分的操作都在UI线程中,在UI线程中执行长时间的操作会引起程序的ANR。为了避免这种情况,Android框架提供了几个类来帮助你把长时间的操作运行在后台。最有用的是IntentService。下面就介绍一下如何使用IntentService来执行长时间的操作。

       IntentService类提供一个简单结构在后台执行操作,而不影响用户的操作。IntentService也不收大多数用户界面生命周期事件的影响。

一个IntentService有以下一些限制:

不能与用户界面直接交互,需要将结果发送到Activity

执行Service的请求是顺序执行的,如果你已经执行了一个IntentService,然后再发送一个请求这个请求会等第一个请求执行完毕后开始执行。

一个执行中的IntentService是没办法中断的

然而,在大多数情况下,IntentService是首选的方式来执行简单的后台操作。

创建IntentService

要为你的APP创建一个IntentService组件,需要继承IntentService类​​,并且在它内部覆盖onHandleIntent()方法。例如:

public class PullService extends IntentService {
@Override
protected void onHandleIntent(Intent workIntent) {

String dataString = workIntent.getDataString();
...
//执行操作
...
}
}
注意:在IntentService中应该避免重写onStartCommand()等方法,因为IntentService为自动调用它们。

在Mainifest中定义IntentService
<application
android:icon="@drawable/icon"
android:label="@string/app_name">
...
<service
android:name=".PullService"
android:exported="false"/>
...
<application/>

android:exported="false" 意味着这个Service只能在自己的App中使用

创建启动一个IntentService

Intent mServiceIntent = new Intent(getActivity(), RSSPullService.class);
mServiceIntent.setData(Uri.parse(dataUrl));
getActivity().startService(mServiceIntent);


当你调用startService()方法后,就会执行onHandleIntent中的方法,执行结束后结束自己。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android