title: Threading in Android to process long running processes
body: <p>Ok, here is my problem. I want to learn AsyncTask, Threading and Handler to process long running tasks. I used Android Cook Book and New Boston Android tutorial, but I can't make it work. </p>
  
  <p>I need to change the progress bar message. This is not for project, but to learn threading. Threading is really hard for me. So if you have any tutorial or guide to understand threading please let me know.</p>
  
  <p>Meanwhile I tried Handler class, but it didn't work. So I tried AsyncTask. But it does not work either.</p>
  
  <p>Here is my code.</p>
  
  <pre><code>package com.example.androidpopup;
  
  import android.app.Activity;
  import android.app.ProgressDialog;
  import android.os.AsyncTask;
  import android.os.Bundle;
  import android.view.Menu;
  import android.view.View;
  import android.view.View.OnClickListener;
  import android.widget.Button;
  
  public class MainActivity extends Activity {
  
      Button click_btn;
      ProgressDialog dialog;
  
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
  
          click_btn = (Button) findViewById(R.id.button1);
  
          click_btn.setOnClickListener(new OnClickListener() {
  
              public void onClick(View arg0) {
                  dialog = ProgressDialog.show(MainActivity.this, "",
                          "Recording...", true);
                  dialog.setCancelable(true);
                  Thread thread = new Thread(){
                      public void run(){
                          try{
                              sleep(2000);
                              new UpdateUI().execute("testing");
                          }catch(InterruptedException e){
                              e.printStackTrace();
                          }
                      }
                  };
              }
          });
      }
  
      public class UpdateUI extends AsyncTask&lt;String, Integer, String&gt;{
  
          @Override
          protected String doInBackground(String... params) {
              // TODO Auto-generated method stub
              return "Searching";
          }
  
          protected void onPreExecute(String f){
              //example of setting up something
              f = "whatever";
          }
  
          protected void onProgressUpdate(Integer...progress){
  
          }
  
          protected void onPostExecute(String result){
              dialog.setMessage(result);
          }
  
      }
  
      @Override
      public boolean onCreateOptionsMenu(Menu menu) {
          getMenuInflater().inflate(R.menu.activity_main, menu);
          return true;
      }
  }
  </code></pre>
  
  <p>If anyone can explain what's wrong of my approach it would be really helpful.</p>
  
  <p>Thank you!</p>