`

Android AsyncTask(异步) 简单样例

阅读更多

Android AsyncTask(异步) 操作使用

 

 

 

 

1、Main类

public class Main extends Activity {

private Button buttonNet;

private Button buttonPrint;

private TextView textView;

private ProgressBar progressBar;

ProgressAsync progressAsync;

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        

        buttonNet = (Button)findViewById(R.id.buttonNet);

        buttonPrint = (Button)findViewById(R.id.buttonPrint);

        textView = (TextView)findViewById(R.id.textView);

        progressBar = (ProgressBar)findViewById(R.id.progress_horizontal);

        buttonNet.setOnClickListener(btnNet);

        buttonPrint.setOnClickListener(btnPrint);

    }

 

 

/**

* 用户离开屏幕,取消异步任务

*/

@Override

protected void onPause() {

 

if (progressAsync != null && progressAsync.getStatus() != AsyncTask.Status.FINISHED) {

        progressAsync.cancel(true);

 }

}

    private OnClickListener btnNet = new OnClickListener() {

 

@Override

public void onClick(View v) {

/*NetOpertor opertor = new NetOpertor();

opertor.operate();*/

progressAsync = new ProgressAsync(textView,progressBar);

progressAsync.execute(1000);

}

};

private OnClickListener btnPrint = new OnClickListener() {

int i = 1;

@Override

public void onClick(View v) {

textView.setText("输出信息===="+i++);

}

};

}

2、NetOpertor类

/**

 * 线程控制

 * @author XP

 *

 */

public class NetOpertor {

 

public void operate(){

 

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

 

e.printStackTrace();

}

 

}

}

3、ProgressAsync执行异步操作

 

/**

 

 * 执行异步操作

 

 * @author XP

 

 *

 

 */

 

public class ProgressAsync extends AsyncTask<Integer, Integer, String> {

private TextView view;

private ProgressBar progressBar;

public ProgressAsync(TextView view,ProgressBar progressBar) {

this.view = view;

this.progressBar = progressBar;

}

//第二步 在后台运行,所有的实际工作都是在其中完成的

@Override

protected String doInBackground(Integer... params) {

NetOpertor opertor = new NetOpertor();

for (int i = 10; i <= 100; i+=10) {

opertor.operate();

//调用第三步

publishProgress(i);

}

return "执行完毕";

}

//第1步 在后台处理开始前,这个方法在UI线程中运行,可显示进度指示器

@Override

protected void onPreExecute() {

view.setText("开始执行异步操作......");

}

//第四步 后台处理结束时,这个方法在UI线程中运行

@Override

protected void onPostExecute(String result) {

view.setText(result);

}

 

//第三步 每当doInBackground调用publishProgress时,都会在UI线程中运行这个方法,它接收后台处理提供的信息,可使用它更新用户看到的ProgressBar控件

@Override

protected void onProgressUpdate(Integer... values) {

progressBar.setProgress(values[0]);

}

}

分享到:
评论
1 楼 hold_on 2013-03-27  
AsyncTask 在4.0和4.0之后 与 2.3和2.3之前的版本有些许不一样
使用的过程要注意下

相关推荐

    Android拍照上传代码样例(转).zip

    可以使用AsyncTask或其他异步处理机制(如Handler、Runnable、Thread或ExecutorService)来执行这些操作,保证用户体验的流畅性。 5. **网络上传** 图片上传通常涉及HTTP或HTTPS请求,可以使用HttpURLConnection或...

    android增删改查样例

    6. **异步操作**: 由于数据库操作可能涉及较耗时的操作,因此在Android中通常会使用AsyncTask或者LiveData等工具来实现后台线程处理,避免阻塞主线程,保证用户界面的流畅性。 7. **Activity和Fragment**: CRUD操作...

    Android 源码样例(附文档)

    通过这种方式,初学者不仅可以学习到基础控件的使用,还能掌握更高级的主题,如异步任务(AsyncTask)、服务(Service)、权限管理、网络请求等。此外,源码分析还能帮助我们学习良好的编程习惯和设计模式,如MVP或MVVM...

    Android示例大全(从培训到工作所有的例子)

    4. **异步处理与线程**:Android主线程不能执行耗时操作,因此需使用AsyncTask、Handler、Thread或Lambda表达式来处理后台任务。理解线程间的通信和生命周期管理,可以避免应用卡顿和崩溃。 5. **多媒体处理**:...

    android UI 各种小例子

    在Android中,由于主线程不能进行耗时操作,所以通常会用到AsyncTask或Handler/Looper机制来在后台线程处理数据,并在UI线程上更新界面。 2. **UI-LinearLayout**: LinearLayout是Android中最基础的布局管理器之...

    android-sample:样例android studio项目。 一个要求用户输入好的想法,然后将它们与随机的动物图片进行匹配以显示的应用程序

    8. **异步处理**:如果图片加载或数据处理可能耗时,开发者可能使用AsyncTask或LiveData来确保这些操作不会阻塞主线程,从而保证应用的流畅性。 9. **测试和调试**:Android Studio提供了丰富的测试框架如JUnit和 ...

    《Android 5.0 开发范例代码大全》(第4版)代码

    Ch07 - 并行与多线程:此章节探讨了如何在Android上进行异步操作,如使用AsyncTask,Handler,Loader,以及线程池。这些代码示例有助于优化应用程序性能,避免阻塞主线程。 Ch08 - 动画与过渡效果:这部分代码展示...

    Android移动应用开发从入门到精通附书源码examples样例

    书中可能会包含异步任务、AsyncTask或使用现代的协程来处理网络请求的实例。 5. **多媒体处理**:Android支持音频、视频的播放和录制,以及图像的加载和编辑。源码示例可能包含如何使用MediaPlayer、ExoPlayer、...

    安卓样例程序

    7. **异步处理**:由于主线程(UI线程)不能进行耗时操作,样例程序可能会演示如何使用AsyncTask、Handler、Thread、Runnable或现代的Coroutines来处理后台任务,避免阻塞用户界面。 8. **网络通信**:Android应用...

    想到做到-Android开发关键技术与精彩案例

    10. **多线程与异步任务处理**:为了避免阻塞主线程,Android应用需要利用多线程进行耗时操作。本书将涉及AsyncTask、Handler、Thread以及最新的Kotlin协程等技术。 11. **动画与图形**:为了让应用更加吸引用户,...

    Android应用源码之拍照上传代码样例(转-IT计算机-毕业设计.zip

    下面将详细讲解这个“Android应用源码之拍照上传代码样例”所涵盖的关键知识点。 1. **Android权限管理**: 在Android中,访问相机和存储空间都需要申请相应的权限。在Android 6.0(API级别23)及更高版本,需要在...

    ViewFlipper+AsyncImageLoader实现页面滑动及页面图片异步加载

    1. 创建一个线程池或使用Android的AsyncTask,避免在主线程中执行耗时操作。 2. 在工作线程中下载或从本地缓存中获取图片。 3. 使用内存缓存和/或磁盘缓存策略,减少网络请求,提高加载速度。 4. 当图片加载完成后,...

    Android直连SQLServer

    12. **测试样例**:TestSQL可能包含了一个简单的Android应用,用于展示如何建立连接、执行查询、插入数据等基本操作。分析这个样例代码可以帮助理解整个流程。 以上是关于"Android直连SQLServer"的主要知识点,实际...

    mars老师android教程第一季源代码.zip

    8. **异步处理**:Android中的异步编程,如AsyncTask、IntentService、Handler/Looper机制,是避免阻塞主线程的关键。源代码会展示如何在后台线程执行耗时任务。 9. **Android组件**:可能还会涉及到...

    Android 2 高级编程 源码

    源码可能包含各种通知样例,如简单的文本通知、带动作的通知以及使用通知渠道的示例。 6. **权限管理(Permissions)**:Android 2.x时代的权限管理可能涉及到动态请求权限的模式,源码中可能包含在运行时请求权限...

    android开发项目

    8. **异步处理**:Android主线程不适宜执行耗时操作,因此通常使用AsyncTask、IntentService或现代的Coroutines进行后台任务处理,避免UI卡顿。 9. **权限管理**:Android 6.0及以上版本引入运行时权限,应用在使用...

    Android JNI 串口通讯

    可以使用Java的`AsyncTask`或者`Handler`机制来实现异步操作。 6. **异常处理**:在C/C++代码中,需要捕获并适当地处理错误,然后通过JNI接口返回给Java层,以便Java代码能正确处理异常情况。 7. **测试与调试**:...

    mars-android源码

    4. **多线程与并发**:在Android开发中,后台任务处理是必不可少的,源码中可能会有异步处理、线程池和AsyncTask的实现,帮助你理解如何在Android环境中正确处理并发问题。 5. **数据库操作**:如果项目涉及本地...

    ApiDemo:Android示例ApiDemo

    7. **异步处理**:Android提供了AsyncTask、Handler、Runnable等机制来处理非UI线程任务,防止阻塞主线程。项目可能包含这些异步处理技术的实例。 8. **动画与图形**:ApiDemo可能包括基本的视图动画、属性动画,...

Global site tag (gtag.js) - Google Analytics