在我的應用程序中,我使用了iosched 2012應用程序中的一些代碼。在具體的起始工作流程如下:startActivity從同一應用程序中的其他活動重新啓動HomeActivity在薑餅中不起作用
1.用戶按下如果
2.HomeActivity檢查用戶被認證的應用程序的啓動圖標。如果他/她不是,則啓動身份驗證活動並將其傳遞給它,並自行完成
3.當登錄過程成功時,身份驗證活動啓動活動以啓動HomeActivity並自行完成
4.HomeActivity會再次檢查用戶是否已通過身份驗證並顯示應用程序的主屏幕。
以下代碼在API級別> 11中的作用類似於魅力。今天,我嘗試了薑餅中的應用程序,它失敗了。第3步工作,但雖然HomeActivity啓動它沒有帶到前面。您必須使用最近的列表並選擇應用程序才能看到主頁活動及其現在顯示的內容。
下面的代碼,並在oncCreate方法從HomeActivity檢查
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(!AccountUtils.isSystemAuthenticated(this)) {
AccountUtils.startSystemAuthentication(this, getIntent());
finish();
} else if(!AccountUtils.isAppAuthenticated(this)) {
AccountUtils.startAppAuthentication(this, getIntent());
finish();
}
if(isFinishing()) {
return;
}
setContentView(R.layout.activity_main);
...
}
}
調用在認證活動的登錄處理後的方法完成
protected void handleLoginSuccess(LoginServiceResponse response, String username, String password) {
if(....) {
if(mFinishIntent != null) {
mFinishIntent.addCategory(Intent.CATEGORY_LAUNCHER);
mFinishIntent.setAction(Intent.ACTION_MAIN);
mFinishIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(mFinishIntent);
}
finish();
} else {
super.handleLoginSuccess(response, username, password);
}
}
凡mFinishIntent構件變量是意圖從HomeActivity傳遞(使用getIntent())
正如我所提到的,在API級別> 11,這工作得很好,並且breakp HomeActivity的onCreted方法中的oint被擊中兩次,而在薑餅手機中,只擊中一次(僅在應用程序啓動時)。
我必須使用另一面旗幟嗎?還是您有任何其他想法?
感謝
謝謝。我會嘗試。我剛剛意識到發生同樣的事情(我認爲我在應用程序中丟失了一些東西)與iOS應用程序。我在2.3.3模擬器中測試了它,並且在驗證之後,HomeActivity沒有再次啓動。 – oceanfeeling
它沒有工作。由於finished()被調用,HomeActivity被銷燬(onDestroy被調用)。 Nevetheless,我仍然不明白爲什麼相同的代碼在ICS中工作,即 – oceanfeeling