多语言展示
当前在线:245今日阅读:167今日分享:16

android AsyncTask使用

针对android处理IO等耗时操作时,我们往往使用自带的handler机制或是异步加载,下面我们就学习下AsyncTask的使用
工具/原料

eclipse android手机/模拟器

方法/步骤
1

了解AsyncTask的结构:按照我们一般下载图片的流程理解,我们会这么想,给你一个url,执行下载,最后我可能要知道进度及最后返回给我的图片,AsyncTask刚好有这样的思路给大家提供。Params  参数(url 等)Progress  进度数(10%,20%.........100%)Result  返回结果(Drawale,bitmap ,stream,file....等)

2

下面继续熟悉AsyncTask的几个重要方法

3

下面上代码开始public class MainActivityextends Activity { Button click; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub // 生成一个按钮 click = new Button(getBaseContext()); LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); addContentView(click, params); // 执行异步任务 myAsynTask task = new myAsynTask(); String[] ss = new String[] { 'http://b.hiphotos.baidu.com/super/whfpf%3D425%2C260%2C50/sign=c259717f59afa40f3c939d9dcd59377d/9358d109b3de9c8260f13fc26f81800a18d843e3.jpg' }; task.execute(ss); super.onCreate(savedInstanceState); } @SuppressLint('NewApi') class myAsynTask extends AsyncTask { @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected void onPostExecute(Drawable result) { // TODO Auto-generated method stub if (result != null) { click.setBackground(result); } super.onPostExecute(result); } @Override protected Drawable doInBackground(String... params) { // TODO Auto-generated method stub HttpClient hc = new DefaultHttpClient(); HttpGet hg = new HttpGet(params[0]);// 获取logo final Drawable bm; try { HttpResponse hr = hc.execute(hg); // bm = BitmapFactory.decodeStream(hr.getEntity().getContent()); bm = Drawable.createFromStream(hr.getEntity().getContent(), 'pic'); } catch (Exception e) { return null; } return bm; } @Override protected void onProgressUpdate(Integer... values) { // TODO Auto-generated method stub super.onProgressUpdate(values); } }}效果如下:

推荐信息