文档章节

Android异步处理

来来叔叔
 来来叔叔
发布于 2017/08/04 23:57
字数 306
阅读 3
收藏 0
在Android 中,不能在主UI线程里处理耗时操作,否则会造成阻塞,时间过长时(超过5秒),甚至造成系统提示是否要kill该进程。

(1)使用线程
注意不能在非主UI线程中更新界面,有时需结合Handler使用.

prgDialog = ProgressDialog.show(GbcJoy.this,"wait","data loading...", true);
Thread th = new Thread(new Runnable()
{
 public void run()
 {
  //prgDialog = ProgressDialog.show();//对话框的显示不能放在此处
  loadData();//time consuming operation
  //updateListView();//也不能在些更新主UI线程界面
  prgDialog.dismiss();
 }
});
th.start();


 

如果需要在耗时操作后,更新或通知主线程,可以通过如下方法:
(2) 使用Handler
 

prgDialog = ProgressDialog.show(GbcJoy.this,"wait","data loading...", true);
  new Thread()
  {
   public void run()
   {
    loadData();//time consumng operation
    handler.sendEmptyMessage(0);//也可以使用下面的postUpdateList();
   }
  }.start();

 //其实下面两个方法都是在主UI线程里完成的(所以最好不要有耗时操作)
 //即使把该函数放在一个子线程里面去调,也是一样
 public void postUpdateList()
     {
      adpHandler.post(new Runnable() 
      {
       public void run() 
       {
        updateListView();
    prgDialog.dismiss();
       }
      });
     }
 private Handler handler =new Handler()
 {
  @Override
  //当有消息发送出来的时候就执行Handler的这个方法,这里不能做耗时操作,否则还是会阻塞主UI线程
  public void handleMessage(Message msg)
  {
   super.handleMessage(msg);
   updateListView();
   prgDialog.dismiss();
  }
 };


 

© 著作权归作者所有

来来叔叔
粉丝 0
博文 100
码字总数 55732
作品 0
广州
高级程序员
私信 提问
Android 异步处理AsyncTask

AsyncTask和Handler对比 1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(...

jackxu2015
2015/08/14
42
0
android AsyncTask介绍

AsyncTask和Handler对比 1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(...

postdep
2014/04/07
126
0
AsyncTask和Handler对比

AsyncTask和Handler对比 1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(...

等待流星
2014/03/13
30
0
Android 异步编程

文章作者:朱鸿,淘宝资深架构师 原文出处:http://hugozhu.myalert.info/2014/06/29/46-async-android.html Android的线程和内存模型 Android操作系统在boot后,会启动一个Zygote(受精卵)进...

鉴客
2014/07/01
1K
1
android AsyncTask介绍

1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更...

freeroad
2014/09/28
37
0

没有更多内容

加载失败,请刷新页面

加载更多

视频如何加水印?

很多视频制作者的视频都被他人盗用过,为了防止自己的劳动成果被他人窃取,给视频加水印对于视频制作者来说,是一件非常重要的事情。那么下面分享一个手机给视频加水印的方法,一起来看看吧!...

白米稀饭2019
33分钟前
5
0
004-Envelop-基于Blockstack的文件传输dapp

本篇文章主要介绍基于Blockstack的文件传输工具; ####A-链接地址 官网地址:https://envelop.app/ Github地址:https://github.com/envelop-app ####B-特性: 1: Share private files easil...

Riverzhou
36分钟前
7
0
SpringCloud——声明式调用Feign

Feign声明式调用 一、Feign简介 使用Ribbon和RestTemplate消费服务的时候,有一个最麻烦的点在于,每次都要拼接URL,组织参数,所以有了Feign声明式调用,Feign的首要目标是将Java HTTP客户端...

devils_os
42分钟前
7
0
《JAVA核心知识》学习笔记 (22. 数据结构)

22.1.1. 栈(stack) 栈( stack)是限制插入和删除只能在一个位置上进行的表,该位置是表的末端,叫做栈顶 (top)。它是后进先出(LIFO)的。对栈的基本操作只有 push(进栈)和 pop(出栈...

Shingfi
47分钟前
6
0
你对AJAX认知有多少(1)?

AJAX(一) AJAX技术对于前段或者后端工程师来说,都是必不可缺的 那我们这几期都来细细品味一下AJAX的相关知识,直接上干货喽~ 1、什么是AJAX,为什么要使用Ajax(请谈一下你对Ajax的认识) 什么...

理性思考
55分钟前
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部