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;}}}
结果:
onPreExecute1onPreExecute2
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
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
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
- AsyncTask执行顺序
- AsyncTask执行顺序
- AsyncTask执行顺序,并发执行。
- AsyncTask delay延迟执行 或者顺序执行 问题
- 多个AsyncTask执行顺序:并行or串行
- AsyncTask<String ,Integer,Integer>类中各个方法的执行先后顺序
- AsyncTask并行执行
- AsyncTask并行执行
- AsyncTask多任务执行
- AsyncTask并行执行
- AsyncTask执行的注意事项
- AsyncTask 只能执行一次
- AsyncTask的执行步骤
- 执行顺序
- 执行顺序
- 执行计划执行顺序
- 使用AsyncTask执行HTTP请求
- AsyncTask类详解 异步执行
- 南宁到哪可以治疗肛瘘
- Halcon 关于形状匹配
- 蓝桥杯 算法训练 2的次幂表示
- 南宁去哪里能治疗肛瘘
- HDOJ 1002 A + B Problem II 大整数相加高效率版的C语言实现
- AsyncTask执行顺序
- 南宁肛瘘的症状及治疗
- 南宁肛瘘的原因是什么
- hdoj 1561 The more, The Better
- 指针数组和数组指针
- 计量单位数据表
- hdu 2091 空心三角形
- 南宁肛瘘手术哪里更好
- JSF2.0与Spring3的整合