2014-09-27 54 views
0

我正在開發一個用戶可登錄的Android應用程序。爲此,每項活動都將擴展爲BaseActivity。在那裏,在onResume()方法中,我檢查用戶是否已登錄,如果沒有,我通過調用startActivity()來啓動我的LoginActivity。我們稱之爲FailActivitystartActivity()不立即調用?

FailActivity重新開始時,它的onResume()被正確調用,然後調用super.onResume(),我得到startActivity()。但意圖從未被執行。而是BaseActivity.onResume()將執行傳遞迴FailActivity.onResume()。因爲用戶沒有登錄這將產生一個錯誤

這裏是BaseActivity相關代碼:

@Override 
protected void onResume() 
{ 
    super.onResume(); 
    boolean wtf = false; 

    if (!loggedIn) { 
     Intent intent = new Intent(this, LoginActivity.class); 
     intent.putExtra(LoginActivity.EXTRA_NEXT_ACTIVITY, this.getClass().getName()); 
     startActivity(intent); 
     wtf = true; 
    } 
    if (wtf) 
     Log.wtf("wtf", "this should not happen"); 
} 

我已經打過電話finish()之前和之後startActivity(),並設置在各類旗幟意圖,沒有一個做我想要的。

如何強制執行登錄意圖?爲什麼startActivity()似乎沒有效果,爲什麼只有這一項活動?

回答

0

隨着startActivity()你開始異步一個新的活動,但用戶將無法使用第一個活動,因爲它將盡可能快地被替換。但請記住,用戶可能會在短時間內看到第一個活動的標題,但內容本身不應該是可見的,但我們在此需要大約100ms或更短的時間。

如果你想跳過代碼onResume()你可以使用一個簡單的return;·`後

+0

如果我打電話return''startActivity()'我回到'FailActivity.onresume()',這是不是有什麼我想要。基本上,有沒有辦法同時執行'startActivity()'? – modemuser 2014-09-27 21:01:22

+0

否,沒有辦法執行活動異步。回調函數'onActivityResult()'用來處理返回的Activity或更好的Activity的結果。 – rekire 2014-09-27 21:05:41

+0

如果我在'FailActivity'中的'super.onResume()'之後放置了'if(!loggedIn)return;',一切正常。謝謝! – modemuser 2014-09-27 21:07:43