OwenChen
OwenChen

Reputation: 11

AsyncTask hangs on at beginning

AsyncTask works fine in Android 4.x, but not for Android 2.3.6. I've step-by-step debugged Android 2.3.6 with a physical mobile device.

It hangs on here:

myTask = new GetDataFromServer();

GetDataFromServer is the class of AsyncTask.

What's going on?

Here under is my code, I only used 1 AsyncTask in my code and received messages from server. that's all.

class GetDataFromServer extends AsyncTask<String, String, String>
{

    protected void onPreExecute ()
    {

        progressDialog1=ProgressDialog.show(MainActivity.this, "Loading data", "Please wait...",true);
    }
    protected String doInBackground(String... params)
    {

        String resulttxt="";
        try {

            serverIp = InetAddress.getByName("192.168.1.123");


            int serverPort=31000;


            Socket clientSocket=new Socket(serverIp,serverPort);

            BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream()));
            bw.write(params[0]);
            bw.flush();


            BufferedReader  br=new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));


            resulttxt=br.readLine();
            if(resulttxt.contains("OK"))
            {
                publishProgress(resulttxt);

            }
            else
            {
                publishProgress(resulttxt);
                clientSocket.close(); 
                bw.close();
                br.close();
                return null;

            }
            resulttxt="";
            resulttxt=br.readLine();
            resulttxt=resulttxt.trim();


            clientSocket.close(); 

        } catch (IOException e) {

            if(Status_txt!=null)
                Status_txt.append( "Server is done.");
        }
        catch (NetworkOnMainThreadException e){
            if(Status_txt!=null)
                Status_txt.append( "NetworkOnMainThreadException");
        }

        return resulttxt;


    }
    protected void onProgressUpdate(String...inStr){

        String[] strData=inStr[0].split("_");
        String szTemp="Last Purchase Date: ";


        szTemp+=strData[1];

        szTemp+="  ,Valid days: ";
        szTemp+=strData[2];
        //Status_txt.setText(szTemp);
        if(Status_txt!=null)
            Status_txt.setText("You Are The Super User");

    }
    protected void onPostExecute(String data) {
        tl_prediction2.removeAllViews();


        if (data == null)
        {

        }
        else {


            if((data.contains("#")==true) || (data.contains("*")==true) 
                    ||data.contains("&")==true)
            {




                String[] arrayTmp=data.split("#");
                for(Integer i=0;i<arrayTmp.length;i++)
                {
                    String[] SubArrayTmp=arrayTmp[i].split("_");

                    tl_prediction2.addView(generateRow(4,SubArrayTmp));

                }
            }

        }
        progressDialog1.dismiss();
    }

};

Upvotes: 1

Views: 724

Answers (2)

Gaurav Arora
Gaurav Arora

Reputation: 17274

Since you haven't posted any code, I could only give you some random probable solutions:

  1. May be your AsyncTask is taking a lot of time to download. Trying increasing its priority using android.os.Process.setThreadPriority(9) inside doInBackground()

  2. Check if you have other previous running long AsyncTask in your code. AsyncTask by default operates on a single background thread. That means your AsyncTask task wouldn't be executed unless your previous AsyncTask are done. To allow parallel execution use executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params). You can read more here

  3. Check for Internet and other permissions in Manifest. This is mostly where people make mistake.

Upvotes: 2

buptcoder
buptcoder

Reputation: 2702

AsyncTask works with ThreadPool. If there too many synctasks are executing, the later AsyncTask will be blocked by others. I think you can use the thread tool in DDMS to check the How many ayncTasks are executing.

Upvotes: 0

Related Questions