2013-01-10 68 views
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運行時,有一個結果。 一旦收到結果,它將開始第二個活動。

這裏是麻煩的步驟:

  1. 在MainActivity,按登錄按鈕。
  2. 按BACK關閉應用程序。
  3. 該應用程序已關閉,但過了一段時間後,第二個活動彈出並立即緊隨其後。

我追尋生命週期事件,logcat中顯示:

  1. MainActivity.onClickLogin
  2. DetailActivity.onCreate開始。
  3. DetailActivity.onCreate結束。
  4. MainActivity.onDestroy開始。
  5. MainActivity.onDestroy結束。

這是非常時間相關的,只發生在「DetailActivity.onCreate結束」和屏幕不顯示之間。一旦顯示DetailActivity屏幕,按返回不會導致MainActivity破壞。它只是破壞DetailActivity預期:

  1. MainActivity.onClickLogin
  2. DetailActivity.onCreate開始。
  3. DetailActivity.onCreate結束。
  4. DetailActivity.onDestroy開始。
  5. DetailActivity.onDestroy結束。

我的問題是:

由於DetailActivity已經創建(onCreated結束)應返回鍵事件發送到DetailActivity並導致其毀滅?爲什麼密鑰被髮送到MainActivity?

任何想法如何抵消這一點?

我正在使用的Android版本是4.0.x

+0

我無法理解您的問題,但是您能否告訴我,您是否想從Activity2中出去 –

+0

我認爲您必須檢查條件是否回退鍵然後不叫第二個活動...如果回來沒有點擊然後調用第二個活動 –

+0

簡單地說,Activity2創建完畢,但屏幕仍然顯示Activity1,此時回退,導致activity1完成。 Activity2出現了。這搞砸了活動堆棧。只有當你完成activity2的創建但是屏幕沒有顯示時足夠快地按下後退。 – Calvin

回答

0

創建頁眉和頁腳。設置一個圖像,並在onclick監聽器上編寫代碼...

相關問題