DownOL 软件仓库– 软件下载,字节世界与新知

Android App开发笔记之子线程操作UI更新总结

发表于:2024-04-25 作者:创始人
编辑最后更新 2024年04月25日,对用户而言,一个好的APP,除了好的功能体验,也需要好的UI。在Android开发过程中,常需要更新界面的UI。而更新UI是要主线程来更新的,即UI线程更新。如果在主线程操作的时间大于5秒,会出现AN

对用户而言,一个好的APP,除了好的功能体验,也需要好的UI。

在Android开发过程中,常需要更新界面的UI。而更新UI是要主线程来更新的,即UI线程更新。如果在主线程操作的时间大于5秒,会出现ANR (系统提示强制关闭)的情况。在耗时操作上我们可以考虑开启一个子线程避免ANR。若在子线程中直接更新页面显示常会报错,如果要进行UI更新,都是要通知主线程来进行。

在开发中可参考以下方法:

  • Handler消息传递机制:根据接收的消息,处理UI更新,在项目中很常用,如以下简单使用:

  • 使用AsyncTask异步任务(流程可控制);是android提供的轻量级的异步类,可直接继承AsyncTask类,便可实现异步操作。除doInBackground(Params...)后台耗时任务方法外,onPreExecute() 和onPostExecute(Object result)都在UI线程里,可直接更新UI;

  • 在Activity或Fragment直接使用runOnUiThread(action)方法,如在Fragment使用;

  • 使用View.post(Runnable r) 或View.postDelay(Runnable r) 方法;

  • 使用android组件Broadcast,子线程中发送广播,主线程中接收广播并更新UI。

    在子线程里通过Intent发送广播,在需要更新UI的地方注册接收,即可更新UI,使用也较为简单。Broadcast为Android四大组件之一,很重要,使用也很广泛,需作详情了解使用。

总结:Android App的UI更新必须在主线程中完成,所以不管上述那种方法,都是将更新UI的消息发送到了主线程的消息对象,让主线程做处理,以完成更新操作。

2022-05-09 22:21:35
0