<一>AsyncTask实现异步处理任务
在开发Android应用时必须遵守单线程模型的原则: Android UI操作并不是线程安全的并且这些操作必须在UI线程中执行。在单线程模型中始终要记住两条法则:
1. 不要阻塞UI线程
2. 确保只在UI线程中访问Android UI工具包
当一个程序第一次启动时,Android会同时启动一个对应的主线程(Main Thread),主线程主要负责处理与UI相关的事件,如:用户的按键事件,用户接触屏幕的事件以及屏幕绘图事件,并把相关的事件分发到对应的组件进行处理。所以主线程通常又被叫做UI线程。
比如说从网上获取一个网页,在一个TextView中将其源代码显示出来,这种涉及到网络操作的程序一般都是需要开一个线程完成网络访问,但是在获得页面源码后,是不能直接在网络操作线程中调用TextView.setText()的.因为其他线程中是不能直接访问主UI线程成员
<二>Android提供了一些其他线程中访问UI线程的方法
Activity.runOnUiThread( Runnable )
View.post( Runnable )
View.postDelayed( Runnable, long )
Hanlder
但是这些类或方法都有一些问题。会使你的代码很复杂很难理解。实现一些很复杂的操作并需要频繁地更新UI时这会变得更糟糕。
为了解决这个问题,Android 提供了一个工具类:AsyncTask,它使创建需要与用户界面交互的长时间运行的任务变得更简单。不需要借助线程和Handler即可实现。
<三>AsyncTask操作步骤
AsyncTask的执行分为四个步骤,每一步都对应一个回调方法,这些方法不应该由应用程序调用,开发者需要做的就是实现这些方法。
<1> 子类化AsyncTask
AsyncTask是抽象类 ,我们必须自己写一个类来继承AsyncTask 类
<2>实现AsyncTask中定义的下面方法
(很关键)
onPreExecute() 该方法将在执行实际的后台操作前被UI thread调用。这个方法只是做一些准备工作,如在界面上显示一个进度条。
doInBackground(Params...), 将在onPreExecute 方法执行后马上执行,该方法运行在后台线程中。这里将主要负责执行那些很耗时的后台计算工作。
publishProgress 该方法来更新实时的任务进度。该方法是抽象方法,子类必须实现。
onProgressUpdate(Progress...), 在publishProgress方法被调用后,UI thread将调用这个方法从而在界面上展示任务的进展情况,可以通过一个进度条进行展示。
onPostExecute(Result), 在doInBackground 执行完成后,onPostExecute 方法将被UI thread调用,后台的计算结果将通过该方法传递到UI thread.
<四>AsyncTask遵守准则
为了正确的使用AsyncTask类,以下是几条必须遵守的准则:
<1>Task的实例必须在UI thread中创建
<2>execute方法必须在UI thread中调用
<3>不要手动的调用onPreExecute(), onPostExecute(Result),doInBackground(Params...), onProgressUpdate(Progress...)这几个方法
<4> 该task只能被执行一次,否则多次调用时将会出现异常
<五>AsyncTask的泛型
AsyncTask定义了三种泛型类型 Params,Progress和Result。
Params 启动任务执行的输入参数,比如HTTP请求的URL。
Progress 后台任务执行的百分比。
Result 后台执行任务最终返回的结果,比如String。
不是所有类型都总是被异步任务使用。如果标记哪个参数不用,只是用void代替就可以了。
<六>取消异步任务
只要调用 cancel(boolean)方法,
一个异步任务可以随时取消。调用这个方法会导致后来的调用isCancelled()返回true。
确保任务被取消尽可能快,你应该总是定期从doInBackground(Object[])中检查isCancelled()返回值。
具体实现:
注意:添加网络权限:
mian.xml
分享到:
相关推荐
7. **异步处理**:Android应用的主线程负责UI更新,因此需要使用AsyncTask、Handler、Thread、Runnable或者现代的Coroutines进行后台任务处理,避免阻塞UI线程。 8. **通知与BroadcastReceiver**:通知是向用户传达...
Android的多线程处理和异步编程是性能优化的关键。使用Handler、Looper、AsyncTask以及现代的LiveData和Coroutines,可以避免主线程阻塞,提高用户体验。同时,理解内存管理和资源回收对于防止内存泄漏和提高应用...
3. **多线程与异步处理**:在Android开发中,处理耗时操作的正确方式是使用线程和异步任务。书会涵盖Handler、Looper、AsyncTask以及线程池等概念,帮助开发者实现高效、流畅的用户体验。 4. **内存管理与性能优化*...
《Android高手进阶指南》是一本专为已经具备一定Android基础的开发者准备的深度学习资料。这本书涵盖了Android开发中的高级主题和技术,旨在帮助读者提升在Android领域的专业技能,成为真正的技术专家。 首先,本书...
在Android开发中,异步加载是一项至关重要的技术,主要用于解决UI线程阻塞问题,提升应用性能和用户体验。...同时,这也是Android应用开发进阶过程中不可或缺的一部分,为处理更复杂的异步任务和网络请求奠定了基础。
在Android开发中,异步任务(AsyncTask)是一种常见的处理耗时操作的方式,它允许开发者在后台线程中执行任务,同时保持与UI线程的交互。本实例提供了完整的AsyncTask实现,对于初学者和进阶开发者来说,都是一个极...
1. **多线程与异步处理**:在Android应用中,为了保证UI的流畅性,开发者需要学会使用线程和异步操作来处理耗时任务。这包括Handler、Looper、Message机制,以及AsyncTask和IntentService的使用。 2. **内存管理与...
在核心开发技术方面,本书会深入探讨Android的异步编程模型,包括AsyncTask、Handler、Looper和线程池。此外,还会有对IntentService、JobScheduler等后台任务执行策略的解析,帮助开发者优化应用性能并节省系统资源...
- AsyncTask:简化异步任务的处理方式。 - Java 8的新特性:如CompletableFuture等高级并发工具。 5. **跨进程通信**: - Intent:不仅用于启动Activity和服务,还可以实现不同进程间的通信。 - AIDL (Android ...
6. **多线程和AsyncTask**:Android应用中的异步处理是提升性能的关键,掌握线程管理和AsyncTask的使用,能有效防止ANR(Application Not Responding)问题,优化用户体验。 7. **碎片化(Fragment)**:随着大屏...
5. **多线程与异步处理**:Android中的AsyncTask、Handler、Thread、Runnable、IntentService等都是处理异步操作的方式,理解和运用它们能避免UI线程阻塞,提升用户体验。 6. **内存管理**:理解Dalvik/ART虚拟机的...
随着协程(Coroutines)的引入,学习如何在Android中优雅地处理异步任务也是必不可少的。 除此之外,还有关于权限管理、Android应用的调试与测试、性能优化、内存泄漏检测、插件化技术、热修复、组件化开发等高级...
2. **多线程与并发**:理解Android中的线程模型,如Handler、Looper、ThreadPool,以及如何使用AsyncTask、IntentService等进行异步处理。还要掌握Java并发包下的概念,如Semaphore、CountDownLatch、CyclicBarrier...
这部分内容通常涉及Android的事件处理机制,以及可能的异步加载数据操作,如使用AsyncTask来异步从网络或本地获取数据。 实现下拉刷新的库和示例代码在网上也有许多,如上述提及的国外开发者Johan Nilsson的实现,...
1. **多线程与异步处理**:Android应用中,为了保证UI的流畅性,需要将耗时操作放在后台线程执行。教程可能会介绍Handler、Looper、AsyncTask、IntentService以及现代的JobScheduler、WorkManager等多线程解决方案。...
2. **网络通信**:Android应用常常需要与服务器进行数据交换,本教程会深入解析AsyncTask、IntentService、Retrofit、OkHttp等网络通信工具的使用,以及如何处理异步操作和网络状态变化。 3. **数据存储**:在...
2. **多线程与异步编程**:理解Handler机制、AsyncTask类的用法以及Service组件的生命周期管理。 3. **自定义View**:学习绘制自定义控件的方法,掌握Canvas绘图上下文的使用,以及Path、Paint等类的功能介绍。 ###...
《Android开发进阶从小工到专家》是由资深Android开发者何红辉编著的一本专业书籍,旨在帮助初入Android开发领域的工程师逐步提升技能,直至达到专家级别。这本书以清晰的结构和高清的书签版形式呈现,使得学习过程...