Android基本功:异步任务(AsyncTask)
一、解决新线程无法更新UI组建问题的方案 为了解决新线程不能更新UI组建的问题,Andorid提供了如下几种解决方案: 使用Handler实现线程之间的通信。 Activity.runOnUiThread(Runnable)。 View.post(Runnable)。 View.postDelayed(Runnable)。 二、ANR(Application Not Responding)异常 Android默认约定当UI线程阻塞超过20秒将会引发ANR(Application Not Responding)异常。但实际上,不要说20秒,即使是5秒甚至2秒,用户都会感到十分不爽。因此,没必要去记这个20秒的时间限度。总之,开发者必须牢记:不要在UI线程中执行一些耗时操作。 三、AsyncTask抽象类 AsyncTask<Params,Progress,Result>是一个抽象类,通常用于被继承,继承AsyncTask需要指定如下三个泛型参数: Params:启动任务执行的输入参数的类型。 Progress:后台任务完成进度值的类型。 Result:后台执行任务完成后返回结果的类型。 四、AsyncTask的特点 更轻量级一些,适用于简单的异步处理,不需要借助线程和Handler即可。 五、使用AsyncTask的步骤 1.创建AsyncTask的子类,并为三个泛型参数指定类型