Android學習(28)AsyncTask_非同步執行緒
阿新 • • 發佈:2018-12-09
Android學習(28)AsynTask_非同步執行緒
AsyncTask是android提供的輕量級的非同步類,可以直接繼承AsyncTask,在類中實現非同步操作,並提供介面反饋當前非同步執行的程度(可以通過介面實現ui進度更新),最後反饋執行的結果給ui主執行緒。
1.新建一個Net.java模擬網路執行緒,讓程式延遲5秒
public class Net {
public void net(){
try {
Thread.sleep(5000);
}catch (InterruptedException e){
e.printStackTrace();
}
}
}
2.新建一個MyAsyncTask.java,繼承AsyncTask,實現執行緒非同步
public class MyAsyncTask extends AsyncTask {
//一個獨立的執行緒
@Override
protected Object doInBackground(Object[] objects) {
//例項化Net
Net net = new Net();
//呼叫net方法使程式延遲5秒
net.net();
return null;
}
}
3.在xml中佈局兩個按鈕,分別執行兩個操作——延遲程式和輸出語句
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation ="vertical"
tools:context="com.example.test.androidtest.AsyncTaskActivity">
<Button
android:id="@+id/btnAT1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="開始執行緒"/>
<Button
android:id="@+id/btnAT2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="執行非同步操作"/>
</LinearLayout>
4.在Activity中呼叫
public class AsyncTaskActivity extends AppCompatActivity implements View.OnClickListener{
private Button btn1,btn2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_async_task);
btn1 = (Button)findViewById(R.id.btnAT1);
btn2 = (Button)findViewById(R.id.btnAT2);
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnAT1:
//若不執行AsyncTask操作,直接呼叫Net.net(),另一個執行緒會在Net執行完之後執行
//Net net = new Net();
// net.net();
//若執行AsyncTask操作,在MyAsyncTask中呼叫Net.net(),另一個執行緒會直接執行
MyAsyncTask myAsyncTask = new MyAsyncTask();
myAsyncTask.execute();
break;
case R.id.btnAT2:
System.out.println("666666666666666");
}
}
}
宣告: 1.知識點來源於《網易雲課堂》——《Android基礎視訊教程》 2.本文只用於本人自身學習記錄,如有侵權,請立即通知我更改或刪除