• 手机站
  • 收藏
聚培教育网合作机构 > 海口秀英区web前端培训海口龙华区IT培训
400-998-6158

AsyncTask解决Android UI堵塞问题

java学习网

更新时间:2021-10-16 浏览:130
核心提示:平常我们在开发设计Android程序流程时碰到较用时每日任务的解决,如I/O浏览的数据库操作、互联网浏览等状况时导致UI诈死等难题,

平常我们在开发设计Android程序流程时碰到较用时每日任务的解决,如I/O浏览的数据库操作、互联网浏览等状况时导致UI诈死等难题,根据 AsyncTask能够非常好的处理这个问题,就今日以在Android中实行Downloader.downloadFile(url),很有可能会阻塞全部 页面。显而易见这会危害客户体验,大家如何解决这个问题呢?

方式 一、

建立一个新的进程实行大家的每日任务,应用Thread类,在 run(){}中载入每日任务编码,例如:

new Thread(new Runnable() {

public void run() {

Downloader.downloadFile(url);

}

}).start();

但应用Thread会造成一些出乎意料的难题,*须程序猿用大量的编码手动式的维护保养它。

方式 二: Android SDK为大家给予了一个后台任务的解决专用工具AsyncTask。AsyncTask便是一个封裝过的后台任务类说白了便是多线程每日任务,便捷大家维 护,Android开发设计网提醒那样的益处能够处理一些线程安全难题,AsyncTask立即承继于Object类,部位为 android.os.AsyncTask。要应用AsyncTask工作中我们要给予三个泛型主要参数,并轻载四个方式 (最少轻载一个)。

三个泛型:

Param ,每日任务电动执行机构*须的基本数据类型

Progress 后台管理测算中应用的进展企业基本数据类型

Result 后台管理测算回到結果的基本数据类型

有一些主要参数是能够设定为不应用的,只需传送为Void型就可以,例如AsyncTask

四个流程:

onPreExecute(),实行预备处理,它运作于UI进程,能够为后台任务做一些准备工作,例如制作一个时间轴控制。

doInBackground(Params...), 后台进程实行的实际测算在这儿完成,doInBackground(Params...)是AsyncTask的重要,此方式 务必轻载。在这个方式 内能够 应用publishProgress(Progress...)更改当今的进展值。

onProgressUpdate(Progress...), 运作于UI进程。假如在doInBackground(Params...)中应用了publishProgress(Progress...),便会触 发这一方式 。在这儿能够对时间轴控制依据进展值作出实际的回应。

onPostExecute(Result),运作于UI进程,能够对后台任务的 結果作出解决,結果便是doInBackground(Params...)的传参。此方式 还要常常轻载,假如Result为null说明后台任务沒有 进行(被撤销或是发现异常)。

更多>同类资讯
更多>相关课程
顶部