The reason behind this one is quite simple, i was working on the usual android stuff and got tired of implementing and writing progress bar loader each time when i use a network connection or some other asynchronous task. Please do share your thoughts about this one.
Anyhow, during execution, it will show a ProgressDialog window and a callback is made to onPreExecution() and awaits the task in doInAyncTask() to complete, then window will be hidden and a callback to onPostExecution() is made.
Usage (Inside an activity) :
ProgressAsync progressWindow=new ProgressAsync(this,"Loading...") {
public void onPreExecution(Context cxt) {
// TODO Auto-generated method stub
Log.e("Test.Dummy", "inside onPreExecution");
}
@Override
public String doInAyncTask(Object... pd) {
// TODO Auto-generated method stub
//code Some network connection or other aync functions as you require
Log.e("Test.Dummy", "inside doInAyncTask");
return null;
}
@Override
public void onPostExecution(Object result,Context cxt) {
// TODO Auto-generated method stub
/*
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "Task Complete !", Toast.LENGTH_SHORT).show();
}
});
*/
Log.e("Test.Dummy", "inside onPostExecution");
}
};
progressWindow.execute(null);
Class : ProgressAsync.java
package com.example.android; import android.app.ProgressDialog; import android.content.Context; public abstract class ProgressAsync extends AsyncTask<Object, Void, Object> { ProgressDialog pd; Context context; public ProgressWindow(Context cxt,String msg) { context=cxt; pd=ProgressDialog.show(cxt,"",msg,true); } @Override protected void onPreExecute() { super.onPreExecute(); onPreExecution(context); } @Override protected Object doInBackground(Object... pd) { return doInAyncTask(pd); } @Override protected void onPostExecute(Object result) { // TODO Auto-generated method stub pd.dismiss(); super.onPostExecute(result); onPostExecution(result,context); } public abstract void onPreExecution(Context context); public abstract void onPostExecution(Object result,Context context); public abstract String doInAyncTask(Object... pd); }
