Android開發學習:[36]AsyncTask的用法?

AsyncTask是android一種解決非同步載入的方案,它比Handler和Message的用法更加輕量級。使用AsyncTask的步驟如下:

工具/原料

電腦

Android 手機或者模擬器

Android studio或者Eclipse

方法/步驟

首先我們新建一個activity。用來作為啟動項。當然也可新建一個專案,這裡就新建一個activtiy來作為例項。

Android開發學習:[36]AsyncTask的用法

然後我們在介面佈局一個按鈕和一個文字檢視。用來處理點選事件,和顯示進度。

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檢視如下:

Android開發學習:[36]AsyncTask的用法

定義一個繼承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";

}

}

Android開發學習:[36]AsyncTask的用法

然後我們在主執行緒中定義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();

}

});

}

以上的一些變數大家看看就應該知道如何定義了,就不在敘述。然後點選上面的執行按鈕。然後這裡我就選擇用手機來測試了。

Android開發學習:[36]AsyncTask的用法

Android開發學習:[36]AsyncTask的用法

然後下面是測試的結果,可以看到進度的完成的時候的截圖。

Android開發學習:[36]AsyncTask的用法

Android開發學習:[36]AsyncTask的用法

注意事項

持續更新

步驟, 大學, 方案, 用法,
相關問題答案