Android(安卓)开发中的 AsyncTask 的用法记录
边做边学吧。
-----------------------layout/async.xml--------------------------------
<?xml version="1.0" encoding="utf-8"?>
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
===============================用来模拟一个比较耗时的操作,比如从网站下载XML 文件并呈现到ListView上面的东西吧。
package com.dhanzhang;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
public class AsyncTaskDemo extends Activity {
private TextView mTextView,Text2;
private Button mStartTask ;
private ListView lv ;
private readData rd;
static SimpleDateFormat sf = new SimpleDateFormat(
"yyyy-MM-dd hh:mm:ss.SSS");
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.async);
setupViews();
}
public void setupViews() {
mTextView = (TextView) findViewById(R.id.text);
Text2=(TextView)findViewById(R.id.text2) ;
mStartTask=(Button)findViewById(R.id.startTask) ;
lv =(ListView) findViewById( R.id.contentListView ) ;
mStartTask.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if( rd ==null){
rd=new readData();
mTextView.setText(
"BegTime:"+
sf.format(new Date(System.currentTimeMillis()))
);
rd.execute(new Integer[]{
1, 1,100
}) ;
}
}
});
}
@Override
public void onDestroy() {
super.onDestroy();
if( rd !=null){
rd.cancel(true) ;
rd=null;
}
}
private class readData extends AsyncTask
int seed =0;
int step=0;
int cnt=100;
@Override
protected List
seed=params[0] ;
step=params[1] ;
cnt =params[2] ;
List
while ( cnt > 0){
Date d = new Date(System.currentTimeMillis());
seed += step;
String txt= String.format("%d:%d:%s", cnt , seed,sf.format(d));
msg.add(txt);
cnt +=-1 ;
}
return msg ;
}
//执行完成后传送结果给UI线程 此方法最后执行
protected void onPostExecute(List
lv.setAdapter(new ArrayAdapter
AsyncTaskDemo.this,
android.R.layout.simple_list_item_1 ,
msg));
Text2.setText(
"EndTime:"+
sf.format(new Date(System.currentTimeMillis()))
);
}
}
}
======================2个记录时间的=======================
AsynaTask 的第一个泛型参数类型是对应 doInBackground()的参数类型 。第三个泛型参数类型是对应的返回类型。第二个是干嘛的,有人知道么。
SDK 版本是:Android 2.2
更多相关文章
- android gpuimage显示的缩放和剪裁模式
- Android之判断时间是否为今天
- 网络---《第一行代码Android》笔记
- Android(安卓)TableLayout表格布局
- Android(安卓)MediaPlayer研究问题
- Android(安卓)-- Camera源码简析,启动流程
- 2011.10.18——— android 自定义Animation
- android 开启关闭wifi服务
- android在处理一写图片资源的时候,会进行一些类型的转换,现在有空