2013-08-14 3 views
3

Странные вещи случаются, если я пытаюсь закончить деятельность. После вызова в первый раз активность закончить метод - активность воссоздает.Android on finish() воссоздает активность

BroadcastReceiver requestReceiver = new BroadcastReceiver() { 

      @Override 
      public void onReceive(Context context, Intent intent) { 
       long resultRequestId = intent.getLongExtra(DVSServiceHelper.EXTRA_REQUEST_ID, 0); 

       if(BuildConfig.DEBUG) Log.d(TAG, "received request id: "+ resultRequestId +", current request id: "+ requestId); 

       if (resultRequestId == requestId) { 
        int resultCode = intent.getIntExtra(DVSServiceHelper.EXTRA_RESULT_CODE, 0); 

        Logger.debug(TAG, "result code: "+ resultCode); 

        switch(resultCode) { 
         case HttpsURLConnection.HTTP_OK: 
          //Dummy intent 
          Intent in = new Intent(); 

          Logger.debug(TAG, "HTTP OK"); 

          //User logged in successfuly. Finish Login activity 
          LoginActivity.this.setResult(AuthorizationManager.LOGIN_SUCCESS, in); 
          Logger.debug(TAG, "setting result..."); 
          LoginActivity.this.finish(); 
          Logger.debug(TAG, "finishing..."); 

          break; 
          ... 

активность OnCreate метод:

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.login_activity); 

     Logger.debug(TAG, "[onCreate]"); 
     ... 

выход LogCat

на первой попытки:

08-14 17:46:00.917: D/(7975): [LoginActivity]  result code: 200 
08-14 17:46:00.917: D/(7975): [LoginActivity]  HTTP OK 
08-14 17:46:00.917: D/(7975): [LoginActivity]  setting result... 
08-14 17:46:00.937: D/(7975): [LoginActivity]  finishing... 
08-14 17:46:00.977: D/(7975): [LoginActivity]  [onCreate] 

на попытку секунд:

08-14 17:50:25.437: D/(7975): [LoginActivity]  result code: 200 
08-14 17:50:25.437: D/(7975): [LoginActivity]  HTTP OK 
08-14 17:50:25.437: D/(7975): [LoginActivity]  setting result... 
08-14 17:50:25.537: D/(7975): [LoginActivity]  finishing... 
08-14 17:50:25.567: D/(7975): [MainActivity]   [onActivityResult] 
08-14 17:50:25.567: D/(7975): [MainActivity]   [onActivityResult] 
08-14 17:50:25.567: D/(7975): [MainActivity]   [onResume] 

EDITED

MainActivty

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     Logger.debug(TAG, "[onActivityResult]"); 

     if(AuthorizationManager.REQUEST_LOGIN == requestCode) { 
      if(AuthorizationManager.LOGIN_FAILED == resultCode) { 

       Logger.debug(TAG, "Login failed!"); 

       Intent login = new Intent(DVSApplication.getContext(), LoginActivity.class); 
       startActivityForResult(login, AuthorizationManager.REQUEST_LOGIN); 
      } 
     } 
    } 



protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     Logger.debug(TAG, "[onCreate]"); 

     //if user isn't saved crediantials - show log in activity 
     if(!AuthorizationManager.getManager(getApplicationContext()).isLoggedIn()) { 

      Logger.debug(TAG, "[onCreate] user is not logged in!"); 

      Intent login = new Intent(DVSApplication.getContext(), LoginActivity.class); 
      startActivityForResult(login, AuthorizationManager.REQUEST_LOGIN); 
     } 
     ... 
} 

protected void onResume() { 
     super.onResume(); 

     Logger.debug(TAG, "[onResume]"); 

     //if user isn't saved crediantials - show log in activity 
     if(!AuthorizationManager.getManager(getApplicationContext()).isLoggedIn()) { 

      Logger.debug(TAG, "[onResume] User is not logged in!"); 

      Intent login = new Intent(DVSApplication.getContext(), LoginActivity.class); 
      startActivityForResult(login, AuthorizationManager.REQUEST_LOGIN); 
     } 
    } 
+0

Итак, что вы делаете в onActivityResult? А активность запускается через startActivityForResult? – RvdK

+0

после окончания вашей деятельности, куда вы ожидаете? – Siddhesh

+0

Можете ли вы показать, как вы начинаете LoginActivity? – JRomero

ответ

0

удалить startActivityForResult(login, AuthorizationManager.REQUEST_LOGIN); из onresume() вашей основной деятельности. Сделав это, вы сможете вернуться к основной деятельности. вы также должны удалить его у вас onActivityResult, если вы не хотите возвращаться к активности после его завершения.

+0

Это связано с тем, что * LoginActivity * вызывается дважды. В * onCreate * и * onResume *? –

+0

Да, это потому, что после завершения этой активности вызывается 'onresume' предыдущего действия и снова активность входа начинается в процессе' onresume' основного действия – arianoo

Смежные вопросы