package com.example.day07_asynctask_method;

import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Bitmap;
import android.util.Log;
import android.view.Menu;
import android.view.View;
/**
1.问题:当我们请求网络数据,解析大数据,读写大数据时 ,需要进行耗时操作---用户体验差
当用户频繁的执行耗时操作时,会出现程序无法响应异常
当用户进行操作(如点击屏幕),程序在5s内没有进行响应,就会出现程序无法响应异常---anr异常
原因:阻塞了主线程
解决: 把耗时操作放到子线程中去执行 2.问题: Only the original thread that created a view hierarchy can touch its views.
只能在主线程(ui线程)中进行ui的修改操作 解决:把数据发送到主线程,让主线程去修改ui 3.asyncTask 异步任务 --- 在子线程中进行耗时操作,耗时操作完后自动的将数据发送到主线程,用户在主线程进行数据操作
1.去继承asyncTask抽象类
2.实现未实现的方法
3.调用,执行该类 *
* @author my
*
*/
public class MainActivity extends Activity { public static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//下载图片按钮点击事件
public void onDownLoadImg(View v){
//执行异步任务
new MyAsynctask().execute("需传参数");
}
/**
* 方法执行顺序 onPreExecute-doInBackground--onPostExecute
* @author my
*
*/
class MyAsynctask extends AsyncTask<String, Integer, Bitmap>{
/**
* 在主线程中执行--在doInBackground方法前执行,通常显示正在加载提示
*/
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
Log.i(TAG, "MainActivity--onPreExcute--threadName ="+Thread.currentThread().getName()+",id = "+Thread.currentThread().getId());
}
/*
* 在子线程中执行--执行耗时操作,
* 参数类型与该类泛型的第一个参数一致,与执行者的execute的参数类型也对应,execute的参数会传到doInBackground方法中
* 返回值类型与类的第三个参数一致,与onPostExecute方法中传入的参数也一致
* 耗时操作执行完后才能后会将结果传给onPostExecute方法
*
*/
@Override
protected Bitmap doInBackground(String... params) {
// TODO Auto-generated method stub
Log.i(TAG, "MainActivity--doInBackground--threadName ="+Thread.currentThread().getName()+",id = "+Thread.currentThread().getId());
return null;
}
/**
* 在主线程中执行--用来处理结果(通常用来显示数据)
* 会接收doInBackground传过来的数据
*/ @Override
protected void onPostExecute(Bitmap result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
Log.i(TAG, "MainActivity--onPostExecute--threadName ="+Thread.currentThread().getName()+",id = "+Thread.currentThread().getId());
}
/**
* 用来更新进度时调用--在主线程中执行
* 调用需要用户去执行
* 参数类型与该类泛型的第二个参数对应,一般表示当前的加载进度
*/
@Override
protected void onProgressUpdate(Integer... values) {
// TODO Auto-generated method stub
super.onProgressUpdate(values);
} } }

Android_AsyncTask_Method的更多相关文章

随机推荐

  1. Myeclipse最简单的svn插件安装方法

    首先来这儿下载插件 http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=2240 找个最新的下载   解压到对应的位置, ...

  2. Kryo 为什么比 Hessian 快

    Kryo 是一个快速高效的Java对象图形序列化框架,它原生支持java,且在java的序列化上甚至优于google著名的序列化框架protobuf.由于 protobuf需要编写Schema文件(. ...

  3. order by优化--Order By实现原理分析和Filesort优化

    在MySQL中的ORDER BY有两种排序实现方式: 1.利用有序索引获取有序数据 2.文件排序 在使用explain分析查询的时候,利用有序索引获取有序数据显示Using index.而文件排序显示 ...

  4. HDU 5607 graph 矩阵快速幂 + 快速幂

    这道题得到了学长的助攻,其实就是一个马尔科夫链,算出一步转移矩阵进行矩阵快速幂就行了,无奈手残 这是我第一回写矩阵快速幂,写的各种毛病,等到调完了已经8点44了,交了一发,返回PE,(发现是少了换行) ...

  5. IE兼容性问题解决方案4--form表单在IE下重复提交

    遇到过一种情况,点击提交按钮的时候,在IE下重复提交,而在其他浏览器下正常. 原因:button按钮不设置type时,在IE下被浏览器默认解析为type="submit",用js提 ...

  6. windows内核初窥(二)-----系统机制

    系统机制: windows2000为执行体.内核.设备驱动程序等核心态部分提供了一些基础机制.先让我们看看都有哪些: (1)陷阱调度:包括中断.延迟过程调用(DPC).异步过程调用(APC).异常处理 ...

  7. bzoj 3263 陌上花开(cdq分治,BIT)

      [题意] 求满足Ai<=Aj,Bi<=Bj,Ci<=Cj的数对的数目. [思路] cdq分治 借网上一句话:第一维排序,第二维cdq分治,第三维树状数组维护. 首先合并三维都是相 ...

  8. uvalive 4119 Always an Interger

    差分数列+字符串处理 题意:是让你判断一个整系数多项式的值是否一直都能被一个所给的正整数所整除. 通过对差分数列的不断求导,我们可以发现,对于任意多项式P,我们只需要判断n从1到k+1是否满足就行了, ...

  9. Vijos1404 遭遇战 最短路,dijkstra,堆

    P1404遭遇战 标签:[显示标签]     背景 你知道吗,SQ Class的人都很喜欢打CS.(不知道CS是什么的人不用参加这次比赛). 描述 今天,他们在打一张叫DUSTII的地图,万恶的恐怖分 ...

  10. 本地已有SVN项目导入到eclipse中

    有时候在本地上checkout了项目,在eclipse中不希望重新checkout一次,可以如下操作: 1.在project上右键-> team -> share project -> ...