首页 理论教育 同时执行的方法

同时执行的方法

时间:2023-06-30 理论教育 版权反馈
【摘要】:这个Async Task用于处理一些后台比较耗时的任务,给用户带来良好的用户体验,编程的语法也显得“优雅”许多,不再需要子线程和Handler就可以完成异步操作,并且刷新用户界面。Async Task定义的方法如下:onPreExecute(),该方法将在执行实际的后台操作前被UI线程调用。下面是Async Task对象应用的示例实现后台技术,Android应用项目名为“Async_Task”,其中Activity的代码如下:程序的运行效果如图5-12所示。图5-12项目Async_Task的运行效果

同时执行的方法

用Handler类来在子线程中更新UI线程,虽然避免了在主线程进行耗时计算,但费时的任务操作总会启动一些匿名的子线程,而太多的子线程会给系统带来巨大的负担,并随之会带来一些性能问题。因此,Android提供了一个工具类Async Task,即异步执行任务。这个Async Task用于处理一些后台比较耗时的任务,给用户带来良好的用户体验,编程的语法也显得“优雅”许多,不再需要子线程和Handler就可以完成异步操作,并且刷新用户界面。

Async Task的执行步骤如下:

(1)继承Async Task;

(2)实现Async Task中定义的一个或几个方法。

Async Task定义的方法如下:

(1)onPreExecute(),该方法将在执行实际的后台操作前被UI线程调用。可以在该方法中做一些准备工作,如在界面上显示进度条,或者一些控件的实例化。这个方法可以不用实现。

(2)doInBackground(Params...),该方法将在onPreExecute方法执行后马上执行,运行在后台线程中,主要负责执行那些很耗时的后台处理工作。可以调用publishProgress方法来更新实时的任务进度。该方法是抽象方法,子类必须实现。

(3)onProgress Update(Progress...),在publishProgress方法被调用后,UI线程将调用这个方法在界面上展示任务的进展情况(如通过进度条进行展示)。

(4)onPostExecute(Result),在doInBackground执行完成后,onPostExecute方法将被UI线程调用,后台的计算结果将通过该方法传递到UI线程,并且在界面上展示给用户。

(5)onCancelled(),在用户取消线程操作时调用,即在主线程中调用onCancelled()时调用。

为了正确地使用Async Task类,必须遵守以下几条准则:(www.xing528.com)

(1)Task的实例必须在UI线程中创建;

(2)Execute方法必须在UI线程中调用;

(3)不要手动调用onPreExecute(),onPostExecute(Result),doInBackground(Params...),onProgressUpdate(Progress...)等方法,需要在UI线程中实例化来调用。

(4)只能被执行一次,多次调用时将会出现异常。

下面是Async Task对象应用的示例实现后台技术,Android应用项目名为“Async_Task”,其中Activity的代码如下:

程序的运行效果如图5-12所示。

图5-12 项目Async_Task的运行效果

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈