0
我有2個活動如下:返回事件被髮送到先前的活動
public class MainActivity extends Activity {
....
profile.login(new onCallback()) {
@Override
public void onResult(int result) {
final Intent i = new Intent(MainActivity.this, DetailActivity.class);
startActivity(i);
}
}
....
}
public class DetailActivity extends Activity {
....
}
凡一的AsyncTask和回調profile.login運行時,有一個結果。 一旦收到結果,它將開始第二個活動。
這裏是麻煩的步驟:
- 在MainActivity,按登錄按鈕。
- 按BACK關閉應用程序。
- 該應用程序已關閉,但過了一段時間後,第二個活動彈出並立即緊隨其後。
我追尋生命週期事件,logcat中顯示:
- MainActivity.onClickLogin
- DetailActivity.onCreate開始。
- DetailActivity.onCreate結束。
- MainActivity.onDestroy開始。
- MainActivity.onDestroy結束。
這是非常時間相關的,只發生在「DetailActivity.onCreate結束」和屏幕不顯示之間。一旦顯示DetailActivity屏幕,按返回不會導致MainActivity破壞。它只是破壞DetailActivity預期:
- MainActivity.onClickLogin
- DetailActivity.onCreate開始。
- DetailActivity.onCreate結束。
- DetailActivity.onDestroy開始。
- DetailActivity.onDestroy結束。
我的問題是:
由於DetailActivity已經創建(onCreated結束)應返回鍵事件發送到DetailActivity並導致其毀滅?爲什麼密鑰被髮送到MainActivity?
任何想法如何抵消這一點?
我正在使用的Android版本是4.0.x
我無法理解您的問題,但是您能否告訴我,您是否想從Activity2中出去 –
我認爲您必須檢查條件是否回退鍵然後不叫第二個活動...如果回來沒有點擊然後調用第二個活動 –
簡單地說,Activity2創建完畢,但屏幕仍然顯示Activity1,此時回退,導致activity1完成。 Activity2出現了。這搞砸了活動堆棧。只有當你完成activity2的創建但是屏幕沒有顯示時足夠快地按下後退。 – Calvin