using AsyncTask class for parallel operationand displaying a progress bar
        Posted  
        
            by 
                Kumar 
            
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Kumar 
        
        
        
        Published on 2012-05-31T04:02:41Z
        Indexed on 
            2012/05/31
            4:40 UTC
        
        
        Read the original article
        Hit count: 321
        
I am displaying a progress bar using Async task class and simulatneously in parallel operation , i want to retrieve a string array from a function of another class that takes some time to return the string array.
The problem is that when i place the function call in doing backgroung function of AsyncTask class , it gives an error in Doing Background and gives the message as cant change the UI in doing Background ..
Therefore , i placed the function call in post Execute method of Asynctask class . It doesnot give an error but after the progress bar has reached 100% , then the screen goes black and takes some time to start the new activity.
How can i display the progress bar and make the function call simultaneously.??plz help , m in distress
here is the code
package com.integrated.mpr;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class Progess extends Activity implements OnClickListener{
    static String[] display = new String[Choose.n];
    Button bprogress;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.progress);
        bprogress = (Button) findViewById(R.id.bProgress);
        bprogress.setOnClickListener(this);
    }
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch(v.getId()){
        case R.id.bProgress:
            String x ="abc";
            new loadSomeStuff().execute(x);
            break;
        }
    }
    public class loadSomeStuff extends AsyncTask<String , Integer , String>{
        ProgressDialog dialog;
        protected void onPreExecute(){
            dialog = new ProgressDialog(Progess.this);
            dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
            dialog.setMax(100);
            dialog.show();
        }
        @Override
        protected String doInBackground(String... arg0) {
            // TODO Auto-generated method stub
            for(int i = 0 ;i<40;i++){
                publishProgress(5);
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            dialog.dismiss();
            String y ="abc";
            return y;
        }
        protected void onProgressUpdate(Integer...progress){
            dialog.incrementProgressBy(progress[0]);
        }
        protected void onPostExecute(String result){
            display = new Logic().finaldata();
            Intent openList = new Intent("com.integrated.mpr.SENSITIVELIST");
            startActivity(openList);
        }
    }
}
© Stack Overflow or respective owner