android使用多线程处理
使用线程处理 耗时比较长的“业务”
public class Main extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViewById(R.id.start_new_thread).setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
//new 一个新的线程对象
NewThread newThread = new NewThread();
//开启一个新的线程,执行doInBackground方法
newThread.execute(12);
System.out.println("main thread!");
}
});
}
}
使用线程必须继承AsyncTask类
/*
* 第一个参数Integer是doInBackground方法中用的参数
* 第二个参数Integer是onProgressUpdate方法中的参数
* 第三个参数String是doInBackground方法的返回值类型,被onPostExecute方法调用
*/
public class NewThread extends AsyncTask<Integer, Integer, String> {
@Override
protected String doInBackground(Integer... params) {
try {
for(int i=0;i<params.length;i++){
System.out.println("params : " + params[i]);
}
System.out.println("sleep 3 second");
//会执行回调函数onProgressUpdate方法
publishProgress(12);
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//返回的字符串被onPostExecute方法作为参数
return "huangbiao";
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
System.out.println("onPreExecute");
}
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
System.out.println("result : " + result);
System.out.println("onPostExecute");
}
@Override
protected void onProgressUpdate(Integer... values) {
// TODO Auto-generated method stub
super.onProgressUpdate(values);
System.out.println("onProgressUpdate");
}
}
回忆过去,珍惜现在,放眼未来

浙公网安备 33010602011771号