Android asynctask使用

时间:2023-03-08 19:13:12
Android asynctask使用

继承asynctask,有三个參数

三个參数的含义是第一个表示输入參数。第二个为progress,表示当前的进度,第三个为doInbackground

   返回值

须要一个參数传入url,返回一个result结果,假设没有网络则返回空

import java.io.InputStream;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List; import mybook.bookInfo;
import mybook.httpget;
import mybook.jsontest; import android.os.AsyncTask;
import android.util.Log;
import android.widget.LinearLayout;
import android.widget.ListView;
import hdu.m12306.zzy.*;
import hdu.m12306.zzy.listview.myadapter2;
public class mytask extends AsyncTask<String ,Void,String > {
private LinearLayout li;
private ListView listview;
private myadapter2 myadapter;
private InputStream in;
private List<LinkedHashMap> data_set;
private httpget httpget;
//须要一个參数传入url,返回一个result结果,假设没有网络则返回空
//三个參数的含义是第一个表示输入參数。第二个为progress,第三个为doInbackground
//返回值
public mytask(ListView listview,myadapter2 adapter,httpget httpget){
this.listview=listview;
this.myadapter=adapter;
//this.in=in;
this.httpget=httpget;
new ArrayList<LinkedHashMap>();
}
@Override
protected String doInBackground(String...urls) {
// TODO Auto-generated method stub
String response=null;
//urls为字符串数组
String geturl=new String();
for(String url:urls)
geturl+=url; Log.e("geturl", geturl);
//httpget http=new httpget(geturl,in);
//http.init();
InputStream myin=httpget.get_IN();
//读取到文件结束,会有问题
//证书文件读取结束
response=httpget.get_reponse(myin); return response;
}
protected void onPostExecute(String result){
//doinBakcground 返回的结果
//这里面跟新ui
if(result!=null){
jsontest json=new jsontest(result); json.init();
data_set=json.get_data();
myadapter.set_dataset(data_set);
// listview.setAdapter(myadapter);
} } }

在以下的代码中更新

  public void on_fresh(final View v){
mytask task=new mytask(listview,myadapter,http);
Log.e("onfresh", url); String []params=new String[]{url};
task.execute(params);
}