Android开发学习:[36]AsyncTask的用法
的有关信息介绍如下:![Android开发学习:[36]AsyncTask的用法](/upload/jingyan/2025/0927/f23023c4.jpg)
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">
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();
}
});
}
以上的一些变量大家看看就应该知道如何定义了,就不在叙述。然后点击上面的运行按钮。然后这里我就选择用手机来测试了。
然后下面是测试的结果,可以看到进度的完成的时候的截图。



