Android IntentService 的使用
2014-05-30 17:23
483 查看
Android应用大部分的操作都在UI线程中,在UI线程中执行长时间的操作会引起程序的ANR。为了避免这种情况,Android框架提供了几个类来帮助你把长时间的操作运行在后台。最有用的是IntentService。下面就介绍一下如何使用IntentService来执行长时间的操作。
IntentService类提供一个简单结构在后台执行操作,而不影响用户的操作。IntentService也不收大多数用户界面生命周期事件的影响。
一个IntentService有以下一些限制:
不能与用户界面直接交互,需要将结果发送到Activity
执行Service的请求是顺序执行的,如果你已经执行了一个IntentService,然后再发送一个请求这个请求会等第一个请求执行完毕后开始执行。
一个执行中的IntentService是没办法中断的
然而,在大多数情况下,IntentService是首选的方式来执行简单的后台操作。
在Mainifest中定义IntentService
android:exported="false" 意味着这个Service只能在自己的App中使用
创建启动一个IntentService
当你调用startService()方法后,就会执行onHandleIntent中的方法,执行结束后结束自己。
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开发中IntentService的使用(二)
- Android中Service与IntentService的使用比较
- Android中IntentService的原理及使用
- Android中IntentService的原理及使用
- Android Training - 使用IntentService执行任务(Lesson 1 - 创建IntentService)
- Android中IntentService的原理及使用
- 【IntentService】Android中IntentService的原理及使用
- Android中IntentService的原理及使用
- Android中IntentService的原理及使用
- Android开发之Service与IntentService的区别与使用场景(源代码剖析)
- 【Android 开发教程】使用IntentService执行异步操作
- Android基本功:IntentService的使用
- Android中IntentService的原理及使用
- Android中使用IntentService创建后台服务实例
- Android 中的context, service,active和intent使用详解
- android中对Looper、HandlerThread、IntentService的理解及使用方法
- Android中IntentService的原理及使用
- 【转自唐忍】Android中IntentService的原理及使用
- Android Training - 使用IntentService执行任务(Lesson 2 - 发送任务给IntentService)
- Android中IntentService的原理及使用