Android 两种异步操作方式

来源:互联网 发布:collator java 编辑:程序博客网 时间:2024/05/21 09:05

两种方法各有各的用法,看情况处理

//第一种,新开一条线程,在传智播客的视频中有讲到

package sn.len.asynctask;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.View;public class AsyncTaskDemoActivity extends Activity implements View.OnClickListener {    @Override    public void onCreate(Bundle savedInstanceState)     {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                View but1=findViewById(R.id.button01);        View but2=findViewById(R.id.button02);        but1.setOnClickListener(this);        but2.setOnClickListener(this);    }@Overridepublic void onClick(View v) {try {switch (v.getId()) {case R.id.button01:{//新开一条线程new Thread(new Runnable(){@Overridepublic void run() {try {Thread.sleep(5*1000);}catch (InterruptedException e) {e.printStackTrace();}}}).start();}break;case R.id.button02:{Log.i("INFO", "Hello World");}break;default:break;}} catch (Exception e) {e.printStackTrace();}}    }

//第二种,自己写个类,继承自AsyncTaks<Void,Void,Void>这个类

package sn.len.asynctask;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.View;public class AsyncTaskDemoActivity extends Activity implements View.OnClickListener {    @Override    public void onCreate(Bundle savedInstanceState)     {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                View but1=findViewById(R.id.button01);        View but2=findViewById(R.id.button02);        but1.setOnClickListener(this);        but2.setOnClickListener(this);    }@Overridepublic void onClick(View v) {try {switch (v.getId()) {case R.id.button01:{//新开一条线程,调用execute其实就是调用doInBackground方法AsyncTaskThread att=new AsyncTaskThread();att.execute();}break;case R.id.button02:{Log.i("INFO", "Hello World");}break;default:break;}} catch (Exception e) {e.printStackTrace();}}    }

//AsyncTaskThread.java

package sn.len.asynctask;import android.os.AsyncTask;import android.util.Log;public class AsyncTaskThread extends AsyncTask<Void, Void, Void> {//其实doInBackground也是新开了一条线程@Overrideprotected Void doInBackground(Void... params) {Log.i("doInBackground", "Start --doInBackground");try {Thread.sleep(5*1000);}catch (InterruptedException e) {e.printStackTrace();}return null;}}
后面这种,可以看一下mars的视频,第四章第六集,异步任务(二) 讲得很详细

原创粉丝点击