最近在看《Android Wireless Application Development Volume2》第一章,讲的主要是线程及异步操作,android中的主要UI线程,最好不要包括太耗时的操作,否则会让该线程阻塞,所以我们就需要将这些耗时的操作放在其他地方执行,而又与主要UI线程有一定关联。androidSDK提供了几种将操作从主UI线程移除的方法,这里主要介绍两种:1.使用AsyncTask类;2.使用标准Thread类。
现在完成一个计数任务,从1计到100,在TextView中显示进度。如果把这些循环加的操作放在onCreat()方法中,肯定会出现阻塞。利用AsyncTask类在后台进行操作,可以使主UI线程顺畅进行下去。这个类里主要涉及到3个方法,doInBackground(),onProgressUpdate(),onPostExecute(),这3个方法中的参数又和类中的3个变量有直接关系,AsyncTask<Void, Integer, Integer>.
doInBackground()就是在后台运行;onProgressUpdate()是在数据更新时调用,onPostExecute()是完成时调用
package com.example.chapter1; import android.os.AsyncTask; import android.os.Bundle; import android.os.SystemClock; import android.app.Activity; import android.widget.TextView; public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //实例化该任务,调用方法启动 CountingTask task=new CountingTask(); task.execute(); } private class CountingTask extends AsyncTask<Void, Integer, Integer>{ CountingTask(){} @Override /** * 在后台运行并处理后台操作 */ protected Integer doInBackground(Void... params) { // TODO Auto-generated method stub int i=0; while(i<100){ SystemClock.sleep(250); i++; if(i%5==0){ //每5%进度时更新一次UI publishProgress(i); } } return i; } /** * 将后台操作与主UI线程联系起来的方法,数据更新时调用 * @param progress 完成度 */ protected void onProgressUpdate(Integer... progress){ TextView tv=(TextView)findViewById(R.id.tv1); tv.setText(progress[0]+"% 已完成"); } /** * 将后台操作与主UI线程联系起来的方法,完成时调用 * @param result 结果 */ protected void onPostExecute(Integer result){ TextView tv=(TextView)findViewById(R.id.tv1); tv.setText("计数完成"+"计到了"+result.toString()); } } }
效果就是上面这样。
2.用Thread的方法,这个是传统的方法,代码如下:
new Thread(new Runnable() { public void run() { int i = 0; while (i < 100) { SystemClock.sleep(250); i++; final int curCount = i; if (curCount % 5 == 0) { //每过5%就更新UI tv.post(new Runnable() { public void run() { tv.setText(curCount + "%完成"); } }); } } tv.post(new Runnable() { public void run() { tv.setText("全部完成!"); } }); } }).start();
相关推荐
在Android开发中,多线程和异步处理是至关重要的技术,它们主要用于改善用户体验,避免因为长时间阻塞主线程导致的界面无响应(ANR)。本文将深入探讨为什么需要多线程,如何实现多线程,以及多线程的核心机制。 1....
总结来说,Android中的多线程异步断点续传技术涉及了文件操作、网络请求、线程同步等多个方面,理解并掌握这些知识对于提升应用性能和用户体验至关重要。通过上述示例和解释,开发者可以更好地理解和实现这一功能。
Android线程 #### 1.1 主线程 主线程是应用启动时自动创建的,主要负责处理与用户交互相关的事件,如触摸事件、界面绘制等。如果在主线程中执行耗时操作,会导致应用程序无响应(ANR),用户体验极差。 #### 1.2 ...
在Android开发中,异步操作是至关重要的,它允许我们执行耗时的操作,如网络请求、数据库查询或大型计算,而不会阻塞用户界面。异步任务的主要目标是避免主线程(UI线程)被长时间占用,从而提高应用的响应性和用户...
2. 采用handler+Thread模式实现多线程异步加载; 3. 引入线程池来管理多线程 4. 引入线程池,并引入内存缓存功能,并对外部调用封装了接口,简化调用过程 参考:...
在Android开发中,多线程异步下载图片是一项常见的需求,尤其在开发涉及大量图片展示的应用时,如社交应用、电商应用等。这样的技术能够提高用户体验,避免UI卡顿,因为图片加载工作不会阻塞主线程。下面我们将深入...
因此,"Android异步操作数据库"是一个至关重要的知识点,它涉及到如何在后台线程中安全、高效地处理数据库事务,避免阻塞UI。 1. **AsyncTask** Android提供了一个内置的异步任务类`AsyncTask`,适用于短时间的...
在Android开发中,异步线程的处理是至关重要的,特别是在UI交互中,为了保证用户界面的流畅性,我们通常需要将耗时操作放在后台线程执行,这就是Runnable异步线程的应用场景。本Android演示项目("android demo")...
在Android开发中,多线程和异步任务处理机制是至关重要的,特别是在处理耗时操作如网络请求、数据库操作或大型数据计算时。本篇博文将聚焦于Android中的`Handler`机制,它是Android异步消息处理的核心组件。通过`...
下面将详细解释`Android线程异步Demo代码`中的关键知识点。 1. **AsyncTask**:AsyncTask是一个轻量级的异步任务框架,用于在后台线程执行任务并在UI线程更新结果。它包含三个泛型参数,分别是`Params`(输入参数)...
因此,我们需要在后台线程即异步线程中执行这些操作。Android提供了多种方式来创建异步线程,如AsyncTask、Handler/Looper、IntentService以及使用Java的Executor框架。 1. **AsyncTask**:AsyncTask是一个轻量级的...
在Android开发中,异步处理是非常重要的一环,特别是在UI线程中执行耗时操作时。`AsyncTask`是Android提供的一种轻量级的异步处理机制,它可以帮助开发者在后台线程执行任务,然后在主线程更新UI,避免了因长时间...
在Android开发中,异步处理是一项至关重要的技术,特别是在处理耗时操作如网络请求和大文件下载时。本文将深入探讨如何使用`AsyncTask`、`New Thread`以及`Handler`来实现Android应用中的异步图片下载。 首先,让...
AsyncTask是Android提供的一种轻量级的异步处理机制,主要用于在后台线程执行耗时操作,然后在主线程更新UI。它包含三个泛型参数,分别代表输入参数类型、进度类型和结果类型。AsyncTask提供了onPreExecute、...
在这个示例中,我们将探讨如何在Android中进行多线程数据库操作以及如何利用CursorAdapter实现异步加载数据库数据。 首先,我们来看多线程访问SQLite数据库。在Android中,主线程负责UI的更新和交互,而长时间运行...
在Android应用开发中,由于主线程负责用户界面的更新,执行耗时操作(如网络请求、数据库操作等)会阻塞UI,导致应用无响应,因此需要使用异步线程来处理这些任务。本示例"Android异步线程使用Demo"主要探讨的是...
总结,结束Android线程时,关键在于优雅、安全地中断操作,而不是简单粗暴地停止。合理的线程管理可以提升用户体验,避免ANR,并保持应用程序的稳定运行。正确使用Thread、AsyncTask、Handler和Looper等工具,结合...
本文将详细探讨如何在Android中实现多线程异步加载图片并更新视图。 首先,我们需要了解Android的线程模型。主线程,也被称为UI线程,负责处理所有的用户交互和更新视图的操作。为了在后台执行耗时任务,我们可以...
标题"Android多线程操作"和描述"Android多线程开发实例,对使用多线程的用户有一定的参考价值!"暗示我们将深入探讨Android中的线程管理以及如何在实践中有效利用。 Android系统默认运行在主线程,也被称为UI线程,...
在Android开发中,异步操作是必不可少的一部分,它能让应用程序在后台执行耗时任务,而不会阻塞用户界面,提供更好的用户体验。Android提供了多种异步处理框架,其中一个被广泛使用的开源框架是“android-async-http...