Android 异步加载学习

来源:互联网 发布:nba2kol乔丹隐藏数据 编辑:程序博客网 时间:2024/06/16 05:29

<span style="background-color: rgb(255, 255, 255); font-family: 'Comic Sans MS'; font-size: 18px;"></span><pre code_snippet_id="1625680" snippet_file_name="blog_20160327_1_5498404" name="code" class="java">安卓应用开发应遵循单线程模型(Single Thread Modle)的原则。因为Android的UI操作并不是线程安全的,所以涉及UI的操作必须在UI线程中完成。但是并非所有的操作都能在主线程中进行,可能会导致ANR(Application No Response).所以开发者要遵循两条法则:1.不能阻塞UI线程。2.确保只在UI线程访问UI工具包。于是,就有了开启子线程进行异步处理的技术。


<span style="background-color: rgb(255, 255, 255); font-family: 'Comic Sans MS'; font-size: 18px;">一:采用AsyncTask</span>

三个参数:

AsyncTask<Params,Progress,Result>,三个参数由用户自己设定类型,如String,或是自定义的封装类型

*Params  启动任务执行的输入参数,比如http请求的URL

*Progress  后台任务执行的百分比,进度条等

*Result     后台执行任务最终返回的结果

四个主要方法:

*doInBackground(Params...) 子类必须实现的方法。主要负责执行那些耗时的后台处理工作。可以调用PublishProgress方法来更新实时的任务进度。

*onPreExecute()  该方法将在执行实际的后台操作前被UI线程调用。如在界面显示 一个进度条,或者是控件的实例化。

*onPostExecute()  在doInBackground()方法执行完成后被调用,并把结果通过该方法传递给UI线程,并且在界面上显示给用户。

*onProgressUpdate() 在publishprogress方法被调用后,UI线程将调用这个方法在界面上展示任务的进展情况。如通过一个进度条进行展示。

最后,在UI线程中通过execute()方法创建AsyncTask的实例。


实例:图片的异步加载。



0 0
原创粉丝点击