Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Aug 8th, 2012  |  syntax: None  |  size: 1.87 KB  |  hits: 6  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Android: Handler for AsyncTask
  2. public class UpdateTask extends AsyncTask<Void, Void, Void> {
  3.     private ProgressDialog progressDialog;
  4.     private Handler handler;
  5.  
  6. public UpdateTask(Act activity) {
  7.  
  8.         progressDialog = ProgressDialog.show(Activity.this, "Wait",
  9.                 "Wait");
  10.         progressDialog.dismiss();
  11.  
  12.         handler = new Handler(){
  13.             @Override
  14.             public void handleMessage(Message msg) {
  15.                 //run on UI Thread
  16.                 switch( msg.what ){
  17.                     case MSG:                      
  18.                         progressDialog.show();
  19.                         break;
  20.                     case DETACH:
  21.                         progressDialog.dismiss();
  22.                         break;  
  23.                 }
  24.             }
  25.         };
  26.  
  27.     }
  28.  
  29.  
  30.     void detach() {
  31.           activity=null;
  32.                   //problematic
  33.           //progressDialog.dismiss();
  34.           //handler.sendEmptyMessage(DETACH);
  35.         }
  36.  
  37.  
  38.  
  39.  
  40.     @Override
  41.     protected Void doInBackground(Void... params) {
  42.         handler.sendEmptyMessage(MSG);;
  43.         return null;
  44.     }
  45.  
  46.     protected void onPostExecute(Void result)    {  
  47.         if (activity==null) {
  48.             Log.w("RotationAsync", "onPostExecute() skipped -- no activity");
  49.           }
  50.           else {
  51.               //problematic
  52.               //                  progressDialog.dismiss();
  53.               handler.sendEmptyMessage(MSG);
  54.                 progressDialog = null;
  55.           }
  56.     }
  57.  
  58. };
  59.        
  60. private Handler handler = new Handler(new Handler.Callback() {
  61.     @Override
  62. public boolean handleMessage(Message msg) {
  63.  
  64.     switch( msg.what ){
  65.                 case MSG:                      
  66.                     progressDialog.show();
  67.                     break;
  68.                 case DETACH:
  69.                     progressDialog.dismiss();
  70.                     break;  
  71.             }
  72.  
  73.     return false;
  74. }
  75. });