Andorid之Process and Threads

分享到:

一:AsyncTask(框架)

An asynchronous task is defined by a computation that runs on a background thread and whose result is published on the UI thread. An asynchronous task is defined by 3 generic types, called Params, Progress and Result, and 4 steps, called onPreExecute, doInBackground, onProgressUpdate and onPostExecute.

  1. Params, the type of the parameters sent to the task upon execution. //输入参数
  2. Progress, the type of the progress units published during the background computation. //单元参数格式
  3. Result, the type of the result of the background computation.//返回参数

Not all types are always used by an asynchronous task. To mark a type as unused, simply use the type Void:

private class MyTask extends AsyncTask<Void, Void, Void> { ... }
package com.example.android_asynctask;

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;

import com.example.android_asynctask.R.string;

import android.R.id;
import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Entity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.Menu;
import android.view.View;
import android.view.View.OnCreateContextMenuListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends Activity {
    private Button button;
    private ImageView imageView;
    private ProgressDialog progressDialog;
    private final String image_path="http://www.baidu.com/img/bdlogo.gif";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button=(Button)this.findViewById(R.id.button1);
        imageView=(ImageView)this.findViewById(R.id.imageView1);
        progressDialog=new ProgressDialog(this);
        progressDialog.setTitle("提示!");
        progressDialog.setCancelable(false);
        progressDialog.setMessage("正在下载图片,请耐心等候~~~");
        button.setOnClickListener(new View.OnClickListener() {
            
            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                new MyTast().execute(image_path);
            }
        });
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    class MyTast extends AsyncTask<String, Integer, byte[]>{

        @Override
        protected byte[] doInBackground(String... arg0) {
            // TODO Auto-generated method stub
            HttpClient httpClient=new DefaultHttpClient();
            HttpGet httpGet =new HttpGet(arg0[0]);
            byte[] result=null;
            try {
                HttpResponse httpResponse=httpClient.execute(httpGet);
                if(httpResponse.getStatusLine().getStatusCode()==200){
                    result=EntityUtils.toByteArray(httpResponse.getEntity());
                }
            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }finally{
                httpClient.getConnectionManager().shutdown();
            }
            return result;
        }
        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub
            super.onPreExecute();
            progressDialog.show();
        }
        //更新ui
        @Override
        protected void onPostExecute(byte[] result) {
            // TODO Auto-generated method stub
            super.onPostExecute(result);
            Bitmap bitmap=BitmapFactory.decodeByteArray(result, 0,result.length);
            imageView.setImageBitmap(bitmap);
            progressDialog.dismiss();
        }
    }
}
昵    称:
验证码:

相关文档:

  • Android listview中添加button
    android中所有的控件都是继承view,如果你认为你有能力,你可以修改framework,你可以把任何控件嵌入到别的控件中。 1.第一你要创建一个线...
  • Android平台REST请求:Retrofit
    Retrofit是Square提供的开源产品,为Android平台的应用提供一个类型安全的REST客户端。对于API,Android平台上不适合过多简单的客户端服务器之...
  • android 高效显示Bitmap
    由于本人英文能力实在有限,不足之初敬请谅解 本博客只要没有注明“转”,那么均为原创,转贴请注明本博客链接链接 Displaying...
  • 一个Demo让你掌握所有的android控件
    有新的则更新 属性 值 说明 android:orientation horizontal/vertical 设置布局水平还是垂直,默认是垂直 android:checked true/false 标...
  • ubuntu下配置jdk+eclipse+android sdk
    一直准备学一点Linux的东西,一直没有付诸行动,这个周末准备安装一下,做了将近半年的android开发,准备学一点关于框架和源码的东西...
  • Android 使用 JavaMail
    今天学习了一下JavaMail,javamail发送邮件确实是一个比较麻烦的问题不用第三方邮件程序。为了以后使用方便,自己写了段代码....
  • 如何判断Android手机当前是否联网?
    如果拟开发一个网络应用的程序,首先考虑是否接入网络,在Android手机中判断是否联网可以通过 ConnectivityManager类的isAvailable()方法判断...
  • Android Bitmap缓存池使用详解
    本文介绍了如何使用缓存来提高UI的载入输入和滑动的流畅性。使用内存缓存、使用磁盘缓存、处理配置改变事件等方法将会有效的解决...
  • android常用代码
    1、图片旋转BitmapbitmapOrg=BitmapFactory.decodeResource(this.getContext().getResources(),R.drawable.moon);Matrixmatrix=newMatrix();matrix.postRotate(-90);/...
  • android之ListView
    ListView是android中一系列组件之一,它以垂直列表的方式列出所需要的列表项.实现方式很简单,主要有两种: 第一种:当前的Activity继承自Lis...
  • Android开源框架 Afinal简介
    Afinal简介 Afinal是一个android的sqliteorm和ioc框架。同时封装了android中的http框架,使其更加简单易用; 使用finalBitmap,无需考虑bitmap在android...
  • Android入门之画图详解_Android
    这篇文章主要介绍了Android入门之画图,对Android初学者有很好的学习借鉴价值,需要的朋友可以参考下...
  • Android ListView常用属性及数据绑定显示
    首先,创建一个用于显示每一行item的layout,名为item.xml <?xmlversion="1.0"encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/r...
  • Android软件开发-ImageView
    ImageView控件是一个图片控件,负责显示图片。 以下模拟手机图片查看器 目录结构: main.xml布局文件: <?xmlversion="1.0"encoding="utf-8"?>...
  • 浅谈android的selector 背景选择器
    关于listview和button都要改变android原来控件的背景,在网上查找了一些资料不是很全,所以现在总结一下android的selector的用法。首先android...
  • Android移动view动画问题
    Android写动画效果不是一般的麻烦,网上找了好久,终于解决了动画的问题,总结记录以共勉。...
  • Android--ContentProvider
    前言 本篇博客讲讲ContentProvider,内容提供者。前面已经讲过了数据持久化,但是除了共享内存(SDCard)的数据外,其他包括SQLite、SharedPr...
  • Android开发贴士集合
    Activity.startActivities()——对于从app流的中部启动会非常好。 TextUtils.isEmpty()——一个普遍适用的简单工具类。 Html.fromHtml()&mdash...
  • ImageView.ScaleType说明
    缩放图片的边界用于视图边界的选取设定。 枚举值 ImageView.ScaleType CENTER 图片位于视图中间,但不执行缩放比例 ImageView.ScaleT...
  • APK权限大全
    目前很多Android软件和游戏中存在恶意行为或收集用户隐私等问题,mTweak站点的软件和游戏下载专区为每个应用程序都进行了严格的检查...