android使用多线程处理
16lz
2021-01-23
使用线程处理耗时比较长的“业务”
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(){@Overridepublic 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> {@Overrideprotected 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 blocke.printStackTrace();}//返回的字符串被onPostExecute方法作为参数return "huangbiao";}@Overrideprotected void onPreExecute() {// TODO Auto-generated method stubsuper.onPreExecute();System.out.println("onPreExecute");}@Overrideprotected void onPostExecute(String result) {// TODO Auto-generated method stubsuper.onPostExecute(result);System.out.println("result : " + result);System.out.println("onPostExecute");}@Overrideprotected void onProgressUpdate(Integer... values) {// TODO Auto-generated method stubsuper.onProgressUpdate(values);System.out.println("onProgressUpdate");}}
更多相关文章
- Android裁剪图像实现方法示例
- Android中常用的bitmap处理方法
- 如何在Android 11 中正确请求位置权限?以及Android 8 - 11位置权
- 详解Android中IntentService的使用方法
- ReactNative调用Android原生方法
- Cocos项目避免不断复制粘贴android lib库的方法
- Android去除系统自带动画的两种方法
- android studio中建立assets和jnilibs的方法