首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

AndEngine 分析之三-AsyncTask,BaseActivity备忘

2012-08-29 
AndEngine 分析之三-----AsyncTask,BaseActivity备忘?不用handler更细页面的另一种更新方式:?AsyncTask en

AndEngine 分析之三-----AsyncTask,BaseActivity备忘

?

不用handler更细页面的另一种更新方式:

?

AsyncTask enables proper and easy use of the UI thread. This class allows to perform background operations and publish results on the UI thread without having to manipulate threads and/or handlers.

?

public abstract class BaseActivity extends Activity {/** * Performs a task in the background, showing a {@link ProgressDialog}, * while the {@link Callable} is being processed. *  * @param <T> * @param pTitleResID * @param pMessageResID * @param pErrorMessageResID * @param pCallable * @param pCallback */protected <T> void doAsync(final int pTitleResID, final int pMessageResID, final Callable<T> pCallable, final Callback<T> pCallback) {this.doAsync(pTitleResID, pMessageResID, pCallable, pCallback, null);}/** * Performs a task in the background, showing a indeterminate {@link ProgressDialog}, * while the {@link Callable} is being processed. *  * @param <T> * @param pTitleResID * @param pMessageResID * @param pErrorMessageResID * @param pCallable * @param pCallback * @param pExceptionCallback */protected <T> void doAsync(final int pTitleResID, final int pMessageResID, final Callable<T> pCallable, final Callback<T> pCallback, final Callback<Exception> pExceptionCallback) {new AsyncTask<Void, Void, T>() {private ProgressDialog mPD;private Exception mException = null;@Overridepublic void onPreExecute() {this.mPD = ProgressDialog.show(BaseActivity.this, BaseActivity.this.getString(pTitleResID), BaseActivity.this.getString(pMessageResID));super.onPreExecute();}@Overridepublic T doInBackground(final Void... params) {try {return pCallable.call();} catch (final Exception e) {this.mException = e;}return null;}@Overridepublic void onPostExecute(final T result) {try {this.mPD.dismiss();} catch (final Exception e) {Debug.e("Error", e);}if(this.isCancelled()) {this.mException = new CancelledException();}if(this.mException == null) {pCallback.onCallback(result);} else {if(pExceptionCallback == null) {Debug.e("Error", this.mException);} else {pExceptionCallback.onCallback(this.mException);}}super.onPostExecute(result);}}.execute((Void[]) null);}/** * Performs a task in the background, showing a {@link ProgressDialog} with an ProgressBar, * while the {@link AsyncCallable} is being processed. *  * @param <T> * @param pTitleResID * @param pMessageResID * @param pErrorMessageResID * @param pAsyncCallable * @param pCallback */protected <T> void doProgressAsync(final int pTitleResID, final ProgressCallable<T> pCallable, final Callback<T> pCallback) {this.doProgressAsync(pTitleResID, pCallable, pCallback, null);}/** * Performs a task in the background, showing a {@link ProgressDialog} with a ProgressBar, * while the {@link AsyncCallable} is being processed. *  * @param <T> * @param pTitleResID * @param pMessageResID * @param pErrorMessageResID * @param pAsyncCallable * @param pCallback * @param pExceptionCallback */protected <T> void doProgressAsync(final int pTitleResID, final ProgressCallable<T> pCallable, final Callback<T> pCallback, final Callback<Exception> pExceptionCallback) {new AsyncTask<Void, Integer, T>() {private ProgressDialog mPD;private Exception mException = null;@Overridepublic void onPreExecute() {this.mPD = new ProgressDialog(BaseActivity.this);this.mPD.setTitle(pTitleResID);this.mPD.setIcon(android.R.drawable.ic_menu_save);this.mPD.setIndeterminate(false);this.mPD.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);this.mPD.show();super.onPreExecute();}@Overridepublic T doInBackground(final Void... params) {try {return pCallable.call(new IProgressListener() {@Overridepublic void onProgressChanged(final int pProgress) {onProgressUpdate(pProgress);}});} catch (final Exception e) {this.mException = e;}return null;}@Overridepublic void onProgressUpdate(final Integer... values) {this.mPD.setProgress(values[0]);}@Overridepublic void onPostExecute(final T result) {try {this.mPD.dismiss();} catch (final Exception e) {Debug.e("Error", e);/* Nothing. */}if(this.isCancelled()) {this.mException = new CancelledException();}if(this.mException == null) {pCallback.onCallback(result);} else {if(pExceptionCallback == null) {Debug.e("Error", this.mException);} else {pExceptionCallback.onCallback(this.mException);}}super.onPostExecute(result);}}.execute((Void[]) null);}/** * Performs a task in the background, showing an indeterminate {@link ProgressDialog}, * while the {@link AsyncCallable} is being processed. *  * @param <T> * @param pTitleResID * @param pMessageResID * @param pErrorMessageResID * @param pAsyncCallable * @param pCallback * @param pExceptionCallback */protected <T> void doAsync(final int pTitleResID, final int pMessageResID, final AsyncCallable<T> pAsyncCallable, final Callback<T> pCallback, final Callback<Exception> pExceptionCallback) {final ProgressDialog pd = ProgressDialog.show(BaseActivity.this, this.getString(pTitleResID), this.getString(pMessageResID));pAsyncCallable.call(new Callback<T>() {@Overridepublic void onCallback(final T result) {try {pd.dismiss();} catch (final Exception e) {Debug.e("Error", e);/* Nothing. */}pCallback.onCallback(result);}}, pExceptionCallback);}// ===========================================================// Inner and Anonymous Classes// ===========================================================public static class CancelledException extends Exception {private static final long serialVersionUID = -78123211381435596L;}}
?

热点排行