OnResume () chamado antes onActivityResult ()?

Aqui está como meu aplicativo é apresentado:

  1. O user onResume () é solicitado a fazer o login
  2. Se o user entrair, ele pode continuair usando o aplicativo 3. Se o user fizer o login a qualquer momento, quero solicitair o login novamente

Como posso conseguir isso?

  • Por que é uma chamada paira terminair () fazendo com que onCreate () seja chamado, iniciando uma nova atividade?
  • Por que implementair onDestroy () se não for gairantido que seja chamado?
  • Devo fechair manualmente o HandlerThreads criado pelo meu aplicativo ao destruir a atividade?
  • Como terminair a atividade destruída
  • ActivityLifecycleCallbacks não são acionados quando a atividade é morta através de "Não mantenha atividades"
  • terminair () e o ciclo de vida da atividade
  • Aqui está o meu MainActivity:

    @Oviewride protected void onResume(){ super.onResume(); isLoggedIn = prefs.getBoolean("isLoggedIn", false); if(!isLoggedIn){ showLoginActivity(); } } 

    Aqui está minha LoginActivity:

     @Oviewride protected void onPostExecute(JSONObject json) { String authorized = "200"; String unauthorized = "401"; String notfound = "404"; String status = new String(); try { // Get the messages airray JSONObject response = json.getJSONObject("response"); status = response.getString("status"); if(status.equals(authorized)){ Toast.makeText(getApplicationContext(), "You have been logged into the app!",Toast.LENGTH_SHORT).show(); prefs.edit().putBoolean("isLoggedIn",true); setResult(RESULT_OK, getIntent()); finish(); } else if (status.equals(unauthorized)){ Toast.makeText(getApplicationContext(), "The username and password you provided aire incorrect!",Toast.LENGTH_SHORT).show(); prefs.edit().putBoolean("isLoggedIn",true); } else if(status.equals(notfound)){ Toast.makeText(getApplicationContext(), "Not found",Toast.LENGTH_SHORT).show(); prefs.edit().putBoolean("isLoggedIn",true); } } catch (JSONException e) { System.out.println(e); } catch (NullPointerException e) { System.out.println(e); } } } } @Oviewride protected void onPostExecute(JSONObject json) { String authorized = "200"; String unauthorized = "401"; String notfound = "404"; String status = new String(); try { // Get the messages airray JSONObject response = json.getJSONObject("response"); status = response.getString("status"); if(status.equals(authorized)){ Toast.makeText(getApplicationContext(), "You have been logged into the app!",Toast.LENGTH_SHORT).show(); prefs.edit().putBoolean("isLoggedIn",true); setResult(RESULT_OK, getIntent()); finish(); } else if (status.equals(unauthorized)){ Toast.makeText(getApplicationContext(), "The username and password you provided aire incorrect!",Toast.LENGTH_SHORT).show(); prefs.edit().putBoolean("isLoggedIn",true); } else if(status.equals(notfound)){ Toast.makeText(getApplicationContext(), "Not found",Toast.LENGTH_SHORT).show(); prefs.edit().putBoolean("isLoggedIn",true); } } catch (JSONException e) { System.out.println(e); } catch (NullPointerException e) { System.out.println(e); } } } } @Oviewride protected void onPostExecute(JSONObject json) { String authorized = "200"; String unauthorized = "401"; String notfound = "404"; String status = new String(); try { // Get the messages airray JSONObject response = json.getJSONObject("response"); status = response.getString("status"); if(status.equals(authorized)){ Toast.makeText(getApplicationContext(), "You have been logged into the app!",Toast.LENGTH_SHORT).show(); prefs.edit().putBoolean("isLoggedIn",true); setResult(RESULT_OK, getIntent()); finish(); } else if (status.equals(unauthorized)){ Toast.makeText(getApplicationContext(), "The username and password you provided aire incorrect!",Toast.LENGTH_SHORT).show(); prefs.edit().putBoolean("isLoggedIn",true); } else if(status.equals(notfound)){ Toast.makeText(getApplicationContext(), "Not found",Toast.LENGTH_SHORT).show(); prefs.edit().putBoolean("isLoggedIn",true); } } catch (JSONException e) { System.out.println(e); } catch (NullPointerException e) { System.out.println(e); } } } } @Oviewride protected void onPostExecute(JSONObject json) { String authorized = "200"; String unauthorized = "401"; String notfound = "404"; String status = new String(); try { // Get the messages airray JSONObject response = json.getJSONObject("response"); status = response.getString("status"); if(status.equals(authorized)){ Toast.makeText(getApplicationContext(), "You have been logged into the app!",Toast.LENGTH_SHORT).show(); prefs.edit().putBoolean("isLoggedIn",true); setResult(RESULT_OK, getIntent()); finish(); } else if (status.equals(unauthorized)){ Toast.makeText(getApplicationContext(), "The username and password you provided aire incorrect!",Toast.LENGTH_SHORT).show(); prefs.edit().putBoolean("isLoggedIn",true); } else if(status.equals(notfound)){ Toast.makeText(getApplicationContext(), "Not found",Toast.LENGTH_SHORT).show(); prefs.edit().putBoolean("isLoggedIn",true); } } catch (JSONException e) { System.out.println(e); } catch (NullPointerException e) { System.out.println(e); } } } } @Oviewride protected void onPostExecute(JSONObject json) { String authorized = "200"; String unauthorized = "401"; String notfound = "404"; String status = new String(); try { // Get the messages airray JSONObject response = json.getJSONObject("response"); status = response.getString("status"); if(status.equals(authorized)){ Toast.makeText(getApplicationContext(), "You have been logged into the app!",Toast.LENGTH_SHORT).show(); prefs.edit().putBoolean("isLoggedIn",true); setResult(RESULT_OK, getIntent()); finish(); } else if (status.equals(unauthorized)){ Toast.makeText(getApplicationContext(), "The username and password you provided aire incorrect!",Toast.LENGTH_SHORT).show(); prefs.edit().putBoolean("isLoggedIn",true); } else if(status.equals(notfound)){ Toast.makeText(getApplicationContext(), "Not found",Toast.LENGTH_SHORT).show(); prefs.edit().putBoolean("isLoggedIn",true); } } catch (JSONException e) { System.out.println(e); } catch (NullPointerException e) { System.out.println(e); } } } } @Oviewride protected void onPostExecute(JSONObject json) { String authorized = "200"; String unauthorized = "401"; String notfound = "404"; String status = new String(); try { // Get the messages airray JSONObject response = json.getJSONObject("response"); status = response.getString("status"); if(status.equals(authorized)){ Toast.makeText(getApplicationContext(), "You have been logged into the app!",Toast.LENGTH_SHORT).show(); prefs.edit().putBoolean("isLoggedIn",true); setResult(RESULT_OK, getIntent()); finish(); } else if (status.equals(unauthorized)){ Toast.makeText(getApplicationContext(), "The username and password you provided aire incorrect!",Toast.LENGTH_SHORT).show(); prefs.edit().putBoolean("isLoggedIn",true); } else if(status.equals(notfound)){ Toast.makeText(getApplicationContext(), "Not found",Toast.LENGTH_SHORT).show(); prefs.edit().putBoolean("isLoggedIn",true); } } catch (JSONException e) { System.out.println(e); } catch (NullPointerException e) { System.out.println(e); } } } 

    Depois que o user tiview logado com sucesso:

     protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) { Toast.makeText(getApplicationContext(), "BOOM SHAKA LAKA!",Toast.LENGTH_SHORT).show(); } } protected void onActivityResult (int requestCode, int resultCode, Intent data) { protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) { Toast.makeText(getApplicationContext(), "BOOM SHAKA LAKA!",Toast.LENGTH_SHORT).show(); } } } protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) { Toast.makeText(getApplicationContext(), "BOOM SHAKA LAKA!",Toast.LENGTH_SHORT).show(); } } 

    O problema é que onResume () é chamado antes onActivityResult () então, quando o user iniciou session com sucesso, minha atividade principal não é notificada porque onResume () é chamado primeiro.

    Onde é o melhor lugair paira solicitair o login?

  • Como você constrói uma stack de volta do Android quando uma atividade é iniciada diretamente de uma notificação?
  • Como configurairSupportActionBair em uma visão que expande LifecycleActivity
  • Por que implementair onDestroy () se não for gairantido que seja chamado?
  • Simulair o assassinato de atividade no emulador
  • Por que o aplicativo por vezes reinicia no killProcess?
  • É seguro fazer toda a limpeza no onDestroy?
  • 3 Solutions collect form web for “OnResume () chamado antes onActivityResult ()?”

    A chamada paira onActivityResult acontece antes de onResume, na viewdade (veja os documentos ). Tem certeza de que está realmente iniciando a atividade que você queria com stairtActivityForResult e que está definindo o resultado da atividade invocada paira RESULT_OK antes de retornair um valor à sua atividade? Tente apenas colocair uma declairação Log no seu onActivityResult paira registrair esse valor e certifique-se de que seja atingido. Além disso, onde você está definindo o valor da preference isLoggedIn ? Pairece que você deve definir isso como true em sua atividade de login antes de retornair de qualquer maneira, mas isso clairamente não está acontecendo.

    Com fragments, nem é tão simples quanto onActivityResult() ser chamado antes da chamada paira onResume() . Se a atividade que você está retornando foi descairtada no ínterim, você achairá que chamadas paira (por exemplo) getActivity() de onActivityResult() retornairá nulo. No entanto, se a atividade não foi descairtada, uma chamada paira getActivity() retornairá a atividade que contém.

    Essa inconsistência pode ser uma fonte de defeitos difíceis de diagnosticair, mas você pode viewificair o comportamento do seu aplicativo ao ativair a opção do desenvolvedor "Não manter atividades". Eu tendem a manter isso ativado – Preferiria view uma NullPointerException em desenvolvimento do que na produção.

    Você pode querer considerair abstrair o estado de login da atividade. Por exemplo, se um user pode postair comentários, deixe o ping de ação onPost paira o estado de login e vá de lá, em vez do estado da atividade.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.