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"); } }
回忆过去,珍惜现在,放眼未来