场景模拟
分析问题
- doInBackground 后台执行,比较耗时的操作都可以放在这里。注意这里不能直接操作UI。
- onPostExecute 相当于Handler 处理UI的方式,在这里面可以使用在doInBackground 得到的结果处理操作UI。
- onProgressUpdate 可以使用进度条增加用户体验度。
- onPreExecute 这里是最终用户调用Excute时的接口
- onCancelled 用户调用取消时,要做的操作
解决问题
private interface isLoadDataListener {
public void loadComplete();
}
// 声明这一接口变量
private isLoadDataListener loadLisneter;
// 给接口赋值,得到接口对象
public void setLoadDataComplete(isLoadDataListener dataComplete) {
this.loadLisneter = dataComplete;
}
class loadGridAsyncTask extends AsyncTask<Integer, Integer, AppsAdapter> {
private int poindex;
public loadGridAsyncTask(int positionindex) {
this.poindex = positionindex;
}
@Override
protected AppsAdapter doInBackground(Integer... params) {
// TODO Auto-generated method stub
// mAppsModel.clear();
Cursor temp = dbHelper.queryPageById(poindex);
loadPage(mApps, temp);
temp.close();
return new AppsAdapter(STB.this, mAppsModel);
}
@Override
protected void onPostExecute(AppsAdapter result) {
gridViewExt itemGrid = (gridViewExt) viewFlipper
.getChildAt(poindex);
itemGrid.setColumnCount(pageColumnCount);
itemGrid.setAdapter(result);
if (loadLisneter != null) {
loadLisneter.loadComplete();
}
}
}
new loadGridAsyncTask(1).execute();
setLoadDataComplete(new isLoadDataListener() {
@Override
public void loadComplete() {
// TODO Auto-generated method stub
//这里执行你要的操作,当UI更新完成后会自动调用这里面的代码 }
});
此篇文章希望能对入门不久的Android 开发者有帮助。