您的位置首页生活百科

Android开发学习:[36]AsyncTask的用法

Android开发学习:[36]AsyncTask的用法

的有关信息介绍如下:

Android开发学习:[36]AsyncTask的用法

AsyncTask是android一种解决异步加载的方案,它比Handler和Message的用法更加轻量级。使用AsyncTask的步骤如下:

首先我们新建一个activity。用来作为启动项。当然也可新建一个项目,这里就新建一个activtiy来作为实例。

然后我们在界面布局一个按钮和一个文本视图。用来处理点击事件,和显示进度。

xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"

android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

android:paddingBottom="@dimen/activity_vertical_margin"

tools:context="com.basillee.demo2.MainActivity3">

android:layout_width="match_parent"

android:layout_height="50dp"

android:text="开始载入"

android:id="@+id/button2"

android:layout_alignParentLeft="false"

android:layout_alignParentStart="false"

android:layout_alignParentTop="true" />

android:layout_height="50dp"

android:id="@+id/textView"

android:layout_alignParentTop="true"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true"

android:layout_marginTop="54dp" />

design视图如下:

定义一个继承AsyncTask的类。自定义时可以传入AsyncTask定义的三个泛型参数,也可以不传入参数。实现需要执行的方法。

private class LoadTask extends AsyncTask{

@Override

protected void onPreExecute() {

super.onPreExecute();

progressDialog=ProgressDialog.show(MainActivity3.this,"AsyncTask Demo","loading.....",true);

}

@Override

protected void onProgressUpdate(Object[] values) {

super.onProgressUpdate(values);

textView.setText((int)values*10+"%");

}

@Override

protected void onPostExecute(Object o) {

super.onPostExecute(o);

progressDialog.dismiss();

textView.setText((String)o);

}

@Override

protected String doInBackground(Object[] params) {

int sum=1;

while(sum<=10){

try {

Thread.sleep(500);

publishProgress(sum);

sum++;

} catch (InterruptedException e) {

e.printStackTrace();

}

}

return "Loading finished";

}

}

然后我们在主线程中定义AsyncTask的对象,并且执行execute方法。

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main_activity3);

button= (Button) findViewById(R.id.button2);

textView= (TextView) findViewById(R.id.textView);

button.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

LoadTask loadTask=new LoadTask();

loadTask.execute();

}

});

}

以上的一些变量大家看看就应该知道如何定义了,就不在叙述。然后点击上面的运行按钮。然后这里我就选择用手机来测试了。

然后下面是测试的结果,可以看到进度的完成的时候的截图。