利用androidannotations的@Backgroud及@UiThread注解替换原生AsyncTask的写法
16lz
2021-01-26
转载请注明http://xuantan.iteye.com/admin/blogs/1826350
在android工程中,若想异步执行一个任务,可以继承AsyncTask<Param, Progress, Result> 类,并实现其中的回调方法即可。
如今,利用androidannotations的@Backgroud及@UiThread注解我们可以更轻松的做到这一点。
修改前代码如下:
.... @Overridepublic void onStart() {super.onStart();new DownloadUsersTask().execute();}private class DownloadUsersTask extends AsyncTask<Void, Void, List<User>> {@Overrideprotected void onPreExecute() {showLoadingProgressDialog();}@Overrideprotected List<User> doInBackground(Void... params) {try{ResponseEntity<User[]> responseEntity = restApiService.getUsersByStatus();return Arrays.asList(responseEntity.getBody());} catch (Exception e) {Log.e(TAG,e.getMessage(),e);}return null;}@Overrideprotected void onPostExecute(List<User> result) {dismissProgressDialog();refreshResult(result);}}private void refreshResult(List<User> users) {if(users == null) {return;}UserListAdapter adapter = new UserListAdapter(this,users);setListAdapter(adapter);}...
替换后代码如下:
... @Overridepublic void onStart() {super.onStart();showLoadingProgressDialog();downloadUsersTask();}@Backgroundvoid downloadUsersTask() {ResponseEntity<User[]> responseEntity = restApiService.getUsersByStatus();List<User> users = Arrays.asList(responseEntity.getBody());testTismissProgressDialog(users);}@UiThreadvoid testTismissProgressDialog(List<User> users) {dismissProgressDialog();refreshResult(users);}private void refreshResult(List<User> users) {if(users == null) {return;}UserListAdapter adapter = new UserListAdapter(this,users);setListAdapter(adapter);}...
是不是清晰、简洁了很多~
相关参考:
https://github.com/excilys/androidannotations/wiki/WorkingWithThreads
更多相关文章
- Android中Toolbar的使用 AppCompatActivity必备
- Android(安卓)Studio 奇技淫巧
- Android(安卓)Custom View --- Continuous Slider(连续滑动器)
- 一个简单的Android程序的登录界面
- Android(安卓)ApiDemos示例解析(49):Content->Resources->Styled
- Android(安卓)Txt文本读写类源代码
- Android(安卓)Selector用法小记
- Android源码编译
- 模仿墨迹天气设置界面布局