[置顶] Android(安卓)AsyncTask异步的学习
16lz
2022-04-01
写了个小demo进行学习。
public class MainActivity extends AppCompatActivity { private TextView tv; private int sum; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = (TextView) findViewById(R.id.tv); Integer[] num = {1,2,3,4,1,1,1,1,1,1};//传入AsyncTask的数组 /** * AsyncTask中的三个参数 * 1.传入的参数,在execute方法中传入,最终传到doInBackground来使用。 * 2.监听异步的变化的值,是异步线程中publishProgress传给onProgressUpdate的值。 * 3.doInBackground返回的值,传给了onPostExecute。 */ new AsyncTask<Integer,String,String>(){ /** * 在主线程中执行 * 在doInBackground方法执行之前执行该方法,做一些预处理的工作 */ @Override protected void onPreExecute() { super.onPreExecute(); showLog("onPreExecute"); } /** * 在线程池中执行 * 异步操作写在此处 * @param params 通过execute方法传入的值 * @return 返回值给onPostExecute来进行主线程的UI操作 */ @Override protected String doInBackground(Integer... params) { showLog("doInBackground"); for (int i = 0;i < 10; i++){ try { Thread.sleep(3000); publishProgress("value = " + i);//调用onProgressUpdate的前提条件方法。 showLog("run " + i + params[i]); sum += params[i].intValue(); } catch (InterruptedException e) { e.printStackTrace(); } } return "result = " + sum; } /** * 在主线程中执行 * 在doInBackground方法执行之后执行该方法 * 用于在主线程中进行UI操作 * @param result doInBackground返回的结果 */ @Override protected void onPostExecute(String result) { super.onPostExecute(result); showLog("onPostExecute"); } /** * 在主线程中执行 * 在调用publishProgress方法后以下方法会执行 * @param values publishProgress中传入的值 */ @Override protected void onProgressUpdate(String... values) { super.onProgressUpdate(values); showLog("onProgressUpdate"); tv.setText(values[0]); } }.execute(num);//execute中传入的是数组,就是说异步任务可以用于多个值 } private void showLog(String msg){ Log.e("uding",msg); }}
更多相关文章
- Android(安卓)Google地图那些事
- Android创建快捷方式图标
- Android(安卓)View.startAnimation()动画
- Android(安卓)中使用 ComponentName 类
- [Android设计模式]Android退出应用程序终极方法
- android service 英文文档解析
- Android中的SQLite使用
- 浅谈Java中Collections.sort对List排序的两种方法
- Python list sort方法的具体使用