I want to make sure that my activity starts after execution of async task. As of now it gets started before the async task completes in background
This is where new activity is called. Before calling the new activity i am calling PagerAsyncTask. I want to make sure that new activity is called only after successful completion of PagerAsyncTask.
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
new PagerAsyncTask().execute();
sharedPreferences = getSharedPreferences(Constants.MY_PREFS, 0);
SharedPreferences.Editor editor = getSharedPreferences(Constants.MY_PREFS_NAME, MODE_PRIVATE).edit();
editor.putBoolean("hasadd", false);
editor.commit();
Log.e("hi", "dsscdds");
startActivity(new Intent(SplashScreenActivity.this, NavigationActivity.class));
PagerAsyncTask
class PagerAsyncTask extends AsyncTask<String,Void,String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected String doInBackground(String... params) {
StringBuilder sb=null;
BufferedReader reader=null;
String serverResponse=null;
try {
URL url = new URL("https://enigmatic-woodland-35608.herokuapp.com/pager.json");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
connection.setConnectTimeout(5000);
connection.setRequestMethod("GET");
connection.connect();
int statusCode = connection.getResponseCode();
//Log.e("statusCode", "" + statusCode);
if (statusCode == 200) {
sb = new StringBuilder();
reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
}
connection.disconnect();
if (sb!=null)
serverResponse=sb.toString();
Log.e("haha", serverResponse);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
return serverResponse;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
//All your UI operation can be performed here
//Response string can be converted to JSONObject/JSONArray like
try {
//String mr[] = new String[5];
JSONObject response=new JSONObject(s);
Iterator<?> keys = response.keys();
int i=0;
while( keys.hasNext() ) {
String key = (String)keys.next();
Log.e("hi",key);
Log.e("hey",response.getString(key));
// mr[i]=response.getString(key);
// Log.e("e=",mr[i]);
i++;
}
Log.e("I", String.valueOf(i));
Iterator<?> keys1 = response.keys();
mr = new String[i];
int k=0;
while ( keys1.hasNext() )
{
String key = (String)keys1.next();
mr[k++]=response.getString(key);
Log.e("fdvfd",mr[k-1]);
}
for (int j=0;j<mr.length;j++)
{
Log.e("dsd",mr[j]);
}
isComplete=true;
setMr(mr);
setSet(1);
new RestaurantFragment().setmResources(mr);
} catch (JSONException e) {
e.printStackTrace();
}
}
}