AsyncTask是android一種解決非同步載入的方案,它比Handler和Message的用法更加輕量級。使用AsyncTask的步驟如下:
工具/原料
電腦
Android 手機或者模擬器
Android studio或者Eclipse
方法/步驟
首先我們新建一個activity。用來作為啟動項。當然也可新建一個專案,這裡就新建一個activtiy來作為例項。
然後我們在介面佈局一個按鈕和一個文字檢視。用來處理點選事件,和顯示進度。
xmlns: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[0]*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();
}
});
}
以上的一些變數大家看看就應該知道如何定義了,就不在敘述。然後點選上面的執行按鈕。然後這裡我就選擇用手機來測試了。
然後下面是測試的結果,可以看到進度的完成的時候的截圖。
注意事項
持續更新