测试代码
package com.test.demo;
import com.text.asynctasktest.R;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.Toast;
public class AsyncTaskDemo extends Activity {
private AsyncTaskDemo _this;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
_this = this;
this.setContentView(R.layout.activity_demo);
}
@Override
protected void onResume() {
doGod();
super.onResume();
}
<span style="color:#FF0000;">public boolean doGod(){
new A().execute();
Toast.makeText(_this, "LatestNews", Toast.LENGTH_SHORT).show();
new B().execute();
return true;
}</span>
class B extends AsyncTask<Void, Void, Void>{
@Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
return null;
}
@Override
protected void onPostExecute(Void result) {
Toast.makeText(_this, "onPostExecute---B", Toast.LENGTH_SHORT).show();
}
@Override
protected void onPreExecute() {
Toast.makeText(_this, "onPreExecute---B", Toast.LENGTH_SHORT).show();
}
}
class A extends AsyncTask<Void, Void, Void>{
@Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
return null;
}
@Override
protected void onPostExecute(Void result) {
Toast.makeText(_this, "onPostExecute-----A", Toast.LENGTH_SHORT).show();
}
@Override
protected void onPreExecute() {
Toast.makeText(_this, "onPreExecute------A", Toast.LENGTH_SHORT).show();
}
}
}
执行顺序:
"onPreExecute------A"
"LatestNews"
"onPreExecute---B"
"onPostExecute-----A"
"onPostExecute---B"
2、测试用例:
public boolean doGod(){
new A().execute();
new B().execute();
Toast.makeText(_this, "LatestNews", Toast.LENGTH_SHORT).show();
return true;
}
输出结果:
"onPreExecute------A"
"onPreExecute---B"
"LatestNews"
"onPostExecute-----A"
"onPreExecute---B"
3、测试用例总结“对于onPreExecute中的内容和主线程中的内容是按先后顺序执行,对于onPostExecute按照先后顺序执行
测试用例:
package com.text.demo;
import com.example.thread.R;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
switch(msg.what){
case 0:
Toast.makeText(MainActivity.this, "doInBackground1", Toast.LENGTH_SHORT).show();
break;
case 1:
Toast.makeText(MainActivity.this, "doInBackground2", Toast.LENGTH_SHORT).show();
break;
}
super.handleMessage(msg);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.activity_main);
new Asyn1().execute();
new Asyn2().execute();
}
class Asyn1 extends AsyncTask<Void, Void, Void>{
@Override
protected void onPreExecute() {
Toast.makeText(MainActivity.this, "onPreExecute1", Toast.LENGTH_SHORT).show();
super.onPreExecute();
}
@Override
protected void onPostExecute(Void result) {
Toast.makeText(MainActivity.this, "onPostExecute1", Toast.LENGTH_SHORT).show();
super.onPostExecute(result);
}
@Override
protected Void doInBackground(Void... params) {
Message msg = handler.obtainMessage();
msg.what =0;
handler.sendMessage(msg);
return null;
}
}
class Asyn2 extends AsyncTask<Void, Void, Void>{
@Override
protected void onPreExecute() {
Toast.makeText(MainActivity.this, "onPreExecute2", Toast.LENGTH_SHORT).show();
super.onPreExecute();
}
@Override
protected void onPostExecute(Void result) {
Toast.makeText(MainActivity.this, "onPostExecute2", Toast.LENGTH_SHORT).show();
super.onPostExecute(result);
}
@Override
protected Void doInBackground(Void... params) {
Message msg = handler.obtainMessage();
msg.what =1;
handler.sendMessage(msg);
return null;
}
}
}
结果:
onPreExecute1
onPreExecute2
doInBackground1
doInBackground2
onPostExecute1
onPostExecute2
形势:
new Asyn1().execute();
new Asyn2().execute();
此种形势:
class Asyn1 extends AsyncTask<Void, Void, Void>{
@Override
protected void onPreExecute() {
Toast.makeText(MainActivity.this, "onPreExecute1", Toast.LENGTH_SHORT).show();
new Asyn2().execute();
super.onPreExecute();
}
@Override
protected void onPostExecute(Void result) {
Toast.makeText(MainActivity.this, "onPostExecute1", Toast.LENGTH_SHORT).show();
super.onPostExecute(result);
}
@Override
protected Void doInBackground(Void... params) {
Message msg = handler.obtainMessage();
msg.what =0;
handler.sendMessage(msg);
return null;
}
}
结果:
onPreExecute1
onPreExecute2
doInBackground2
onPostExecute2
onPostExecute1
形势3:
class Asyn1 extends AsyncTask<Void, Void, Void>{
@Override
protected void onPreExecute() {
new Asyn2().execute();
Toast.makeText(MainActivity.this, "onPreExecute1", Toast.LENGTH_SHORT).show();
super.onPreExecute();
}
@Override
protected void onPostExecute(Void result) {
Toast.makeText(MainActivity.this, "onPostExecute1", Toast.LENGTH_SHORT).show();
super.onPostExecute(result);
}
@Override
protected Void doInBackground(Void... params) {
Message msg = handler.obtainMessage();
msg.what =0;
handler.sendMessage(msg);
return null;
}
}
结果:
onPreExecute2
onPreExecute1
doInBackground2
onPostExecute2
onPostExecute1
形势四:
class Asyn1 extends AsyncTask<Void, Void, Void>{
@Override
protected void onPreExecute() {
Toast.makeText(MainActivity.this, "onPreExecute1", Toast.LENGTH_SHORT).show();
super.onPreExecute();
}
@Override
protected void onPostExecute(Void result) {
new Asyn2().execute();
Toast.makeText(MainActivity.this, "onPostExecute1", Toast.LENGTH_SHORT).show();
super.onPostExecute(result);
}
@Override
protected Void doInBackground(Void... params) {
Message msg = handler.obtainMessage();
msg.what =0;
handler.sendMessage(msg);
return null;
}
结果:
onPreExecute1
doInBackground1
onPreExecute2
onPostExecute1
doInBackground2
onPostExecute2