UI线程、handler、service间的关系

本文探讨了解决Android开发中Service运行耗时任务导致UI界面停顿的问题。提出了两种解决方案:一是将Service设置为远程进程;二是通过开启新线程处理耗时任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       在主界面中启动了一个service,service需要进行一些耗时操作(如图一)。结果发现UI界面会有停顿的现象。仔细查看资料后发现,原来service和也在UI线程中,而handler和调用它的线程在同一线程中,所以service在运转时会阻塞UI线程。找到阻塞的原因就好办了。

     

      解决方法一:将service设置成remote。设置成remote后又有产生了一个问题——该如何管理service。想要管理remote服务需要借助于AIDL(Android Interface Definition Language)。

 

<service android:name="com.ex.MyService" android:process=":remote"/>


 

   解决方法二:由UI线程开启一个service,在service再启动一个线程,在线程中来处理耗时操作(如图二)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值