title: Properly Using AsyncTask get()
body: <p>I am running into a problem. I need to use asynctask to retrieve JSON data and I need that data before I moved to the next part of the program. However, when using the get() method of AsyncTask I have 5 to 8 sec black screen before I see the data is displayed. I would like to display a progress dialog during the data retrieval but I cannot do this due to the black screen. Is there a way to put into another thread? here is some code</p>
  
  <p>AsyncTask</p>
  
  <pre><code>public class DataResponse extends AsyncTask&lt;String, Integer, Data&gt; {
  
      AdverData delegate;
      Data datas= new Data();
      Reader reader;
      Context myContext;
      ProgressDialog dialog;
      String temp1;
  
  public DataResponse(Context appcontext) {
  
      myContext=appcontext;
      }
  
  @Override
  protected void onPreExecute()
  {
      dialog= new ProgressDialog(myContext);
      dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
      dialog.setCancelable(false);
      dialog.setMessage("Retrieving...");
      dialog.show(); 
  };      
  
      @Override
      protected Data doInBackground(String... params) {
          temp1=params[0];              
          try
          {
              InputStream source = retrieveStream(temp1);
              reader = new InputStreamReader(source);
          }
          catch (Exception e)
          {
              e.printStackTrace();
          }
  
              Gson gson= new Gson();
              datas= gson.fromJson(reader, Data.class);    
  
  
              return datas; 
  
  
      }
  
  
      @Override
      protected void onPostExecute(Data data) 
      {
  
               if(dialog.isShowing())
              {
                  dialog.dismiss();
              }
  
      }
  
  
  
      private InputStream retrieveStream(String url) {
  
              DefaultHttpClient client = new DefaultHttpClient(); 
  
              HttpGet getRequest = new HttpGet(url);
  
              try {
  
                 HttpResponse getResponse = client.execute(getRequest);
                 final int statusCode = getResponse.getStatusLine().getStatusCode();
  
                 if (statusCode != HttpStatus.SC_OK) { 
                    Log.w(getClass().getSimpleName(), 
                        "Error " + statusCode + " for URL " + url); 
                    return null;
                 }
  
                 HttpEntity getResponseEntity = getResponse.getEntity();
                 return getResponseEntity.getContent();
  
              } 
              catch (IOException e) {
                 getRequest.abort();
                 Log.w(getClass().getSimpleName(), "Error for URL " + url, e);
              }
  
              return null;
  
           }
  </code></pre>
  
  <p>}</p>
  
  <p>DisplayInfo</p>
  
  <pre><code>public class DisplayInfo extends Activity implements AdverData {
  
  public static Data data;
  public ProjectedData attup;
  public ProjectedData attdown;
  public ProjectedData sprintup;
  public ProjectedData sprintdown;
  public ProjectedData verizionup;
  public ProjectedData veriziondown;
  public ProjectedData tmobileup;
  public ProjectedData tmobiledown;
  public ProjectedAll transfer;
  private ProgressDialog dialog;
  public DataResponse dataR;
  
  Intent myIntent; // gets the previously created intent
  double x; // will return "x"
  double y; // will return "y"
  int spatial; // will return "spatial"
  
  
  //public static Context appContext;
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
  
      StrictMode.ThreadPolicy policy = new StrictMode.
              ThreadPolicy.Builder().permitAll().build();
              StrictMode.setThreadPolicy(policy); 
  
      dialog= new ProgressDialog(DisplayInfo.this);
      dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
      dialog.setCancelable(false);
      dialog.setMessage("Retrieving...");
      dialog.show(); 
  
          myIntent= getIntent(); // gets the previously created intent
           x = myIntent.getDoubleExtra("x",0); // will return "x"
           y = myIntent.getDoubleExtra("y", 0); // will return "y"
           spatial= myIntent.getIntExtra("spatial", 0); // will return "spatial"
  
          String URL = "Some URL"
  
  
  
  
  
  
  dataR=new DataResponse().execute(attUp).get();
  
  
  
  
  
  
  @Override
  public void onStart()
  {more code}
  </code></pre>