在主界面中启动了一个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再启动一个线程,在线程中来处理耗时操作(如图二)。
本文探讨了解决Android开发中Service运行耗时任务导致UI界面停顿的问题。提出了两种解决方案:一是将Service设置为远程进程;二是通过开启新线程处理耗时任务。
762

被折叠的 条评论
为什么被折叠?



