title: Run app and then download json
body: <p>I am making an Android app which working with a content from downloaded JSON file (parsed by GSON). Now, everything is happening in <code>onCreate()</code> method after <code>setContentView()</code>, which is not very good for performance I think. <strong>First</strong> I want to load and display content of my app (layouts, views) and <strong>then</strong> download JSON from URL. How can I achieve it? Good example is Facebook's Android app.</p>
  
  <p>Source:</p>
  
  <pre><code>    @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_xyz);
  
      if (android.os.Build.VERSION.SDK_INT &gt; 9) {
          StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
          StrictMode.setThreadPolicy(policy);
      }
  
      if(isNetworkAvailable()) {
          try {
              URL urlLiczba = new URL("https://xyz/");
              InputStreamReader readerLiczba = new InputStreamReader(urlLiczba.openStream(/*SK*/));
  
              Gson gson = new Gson();
              LiczbaImprez liczbaImprez = gson.fromJson(readerLiczba, LiczbaImprez.class);
  
              LayoutInflater inflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
              LinearLayout layout = null;
              ImageView logo = null;
              TextView nazwa = null;
              TextView czasMiejsce = null;
              String czasMiejsceStr;
              TextView opis = null;
              LinearLayout lista = (LinearLayout) findViewById(R.id.listaImprez);
  
              for (int i = 0; i &lt; Integer.parseInt(liczbaImprez.liczba); i++) {
                  URL url = new URL("https://xyz/dir/" + i);
                  InputStreamReader reader = new InputStreamReader(url.openStream());
                  JsonReader jsonReader = new JsonReader(reader);
                  jsonReader.setLenient(true);
                  Imprezy imprezy = gson.fromJson(jsonReader, Imprezy.class);
  
                  layout = (LinearLayout) inflater.inflate(R.layout.item_imprezy, null);
                  logo = (ImageView) layout.findViewById(R.id.ikonaImprezy);
                  nazwa = (TextView) layout.findViewById(R.id.nazwaImprezy);
                  czasMiejsce = (TextView) layout.findViewById(R.id.czasMiejsce);
                  opis = (TextView) layout.findViewById(R.id.opisImprezy);
  
                  switch (imprezy.typ) {
                      case "element1":
                          logo.setImageResource(R.drawable.logo_of_element1);
                          break;
                      case "element2":
                          logo.setImageResource(R.drawable.logo_of_element2);
                          break;
                      default:
                          break;
                  }
                  nazwa.setText(imprezy.nazwa);
                  czasMiejsceStr = imprezy.data + " - " + imprezy.miejsce;
                  czasMiejsce.setText(czasMiejsceStr);
                  opis.setText(imprezy.opis);
                  lista.addView(layout);
              }
          } catch (MalformedURLException e) {
              Toast.makeText(getApplicationContext(), "Something went wrong :/.", Toast.LENGTH_SHORT).show();
          } catch (IOException e) {
  
          }
      }
      else{
          Toast.makeText(getApplicationContext(), "No connection!", Toast.LENGTH_LONG).show();
      }
  }
      private class LiczbaImprez {
      String liczba;
  }
  
  private class Imprezy{
      String typ;
      String nazwa;
      String miejsce;
      String data;
      String opis;
  }
  private boolean isNetworkAvailable() {
      ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
      NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
      return activeNetworkInfo != null &amp;&amp; activeNetworkInfo.isConnected();
  }
  </code></pre>