Android IntentService 的使用

        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中的方法,执行结束后结束自己。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值