AsyncTask执行顺序

来源:互联网 发布:联通4g是什么网络制式 编辑:程序博客网 时间:2024/04/28 01:13

测试代码

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;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);_this = this;this.setContentView(R.layout.activity_demo);}@Overrideprotected 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>{@Overrideprotected Void doInBackground(Void... params) {// TODO Auto-generated method stubreturn null;}@Overrideprotected void onPostExecute(Void result) {Toast.makeText(_this, "onPostExecute---B", Toast.LENGTH_SHORT).show();}@Overrideprotected void onPreExecute() {Toast.makeText(_this, "onPreExecute---B", Toast.LENGTH_SHORT).show();}}class A extends AsyncTask<Void, Void, Void>{@Overrideprotected Void doInBackground(Void... params) {// TODO Auto-generated method stubreturn null;}@Overrideprotected void onPostExecute(Void result) {Toast.makeText(_this, "onPostExecute-----A", Toast.LENGTH_SHORT).show();}@Overrideprotected 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(){@Overridepublic 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);}};@Overrideprotected 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>{@Overrideprotected void onPreExecute() {Toast.makeText(MainActivity.this, "onPreExecute1", Toast.LENGTH_SHORT).show();super.onPreExecute();}@Overrideprotected void onPostExecute(Void result) {Toast.makeText(MainActivity.this, "onPostExecute1", Toast.LENGTH_SHORT).show();super.onPostExecute(result);}@Overrideprotected Void doInBackground(Void... params) {Message msg = handler.obtainMessage();msg.what =0;handler.sendMessage(msg);return null;}}class Asyn2 extends AsyncTask<Void, Void, Void>{@Overrideprotected void onPreExecute() {Toast.makeText(MainActivity.this, "onPreExecute2", Toast.LENGTH_SHORT).show();super.onPreExecute();}@Overrideprotected void onPostExecute(Void result) {Toast.makeText(MainActivity.this, "onPostExecute2", Toast.LENGTH_SHORT).show();super.onPostExecute(result);}@Overrideprotected 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>{@Overrideprotected void onPreExecute() {Toast.makeText(MainActivity.this, "onPreExecute1", Toast.LENGTH_SHORT).show();new Asyn2().execute();super.onPreExecute();}@Overrideprotected void onPostExecute(Void result) {Toast.makeText(MainActivity.this, "onPostExecute1", Toast.LENGTH_SHORT).show();super.onPostExecute(result);}@Overrideprotected Void doInBackground(Void... params) {Message msg = handler.obtainMessage();msg.what =0;handler.sendMessage(msg);return null;}}
结果:

onPreExecute1

onPreExecute2

doInBackground2

onPostExecute2

doInBackground1

onPostExecute1


形势3:

class Asyn1 extends AsyncTask<Void, Void, Void>{@Overrideprotected void onPreExecute() {new Asyn2().execute();Toast.makeText(MainActivity.this, "onPreExecute1", Toast.LENGTH_SHORT).show();super.onPreExecute();}@Overrideprotected void onPostExecute(Void result) {Toast.makeText(MainActivity.this, "onPostExecute1", Toast.LENGTH_SHORT).show();super.onPostExecute(result);}@Overrideprotected Void doInBackground(Void... params) {Message msg = handler.obtainMessage();msg.what =0;handler.sendMessage(msg);return null;}}

结果:

onPreExecute2

onPreExecute1

doInBackground2

onPostExecute2

doInBackground1

onPostExecute1


形势四:

class Asyn1 extends AsyncTask<Void, Void, Void>{@Overrideprotected void onPreExecute() {Toast.makeText(MainActivity.this, "onPreExecute1", Toast.LENGTH_SHORT).show();super.onPreExecute();}@Overrideprotected void onPostExecute(Void result) {new Asyn2().execute();Toast.makeText(MainActivity.this, "onPostExecute1", Toast.LENGTH_SHORT).show();super.onPostExecute(result);}@Overrideprotected Void doInBackground(Void... params) {Message msg = handler.obtainMessage();msg.what =0;handler.sendMessage(msg);return null;}

结果:

onPreExecute1
doInBackground1

onPreExecute2

onPostExecute1

doInBackground2

onPostExecute2




0 0
原创粉丝点击