2013-10-23 71 views
0

我有2個活動,ActivityA和ActivityB按back運行的onCreate當它應該在onStart只運行

ActivityA有以下文本一個TextView:

<a href="com.myapp.mydata.user/23">John</a> is a great person.

當鏈接用戶點擊,我在清單上獲取事件並打開ActivityB。

我在ActivityB上顯示了一些信息,當我點擊android上的標準後退按鈕時,再次執行ActivityA的onCreate方法,當它清除時不應該這樣做,因爲我只是回去。

我有什麼選擇?

+0

是什麼活動-A'savedInstanceBundle'束的價值? Logcat。活動 – johntheripp3r

+0

對不起'savedInstanceState' -1 – johntheripp3r

+0

[參考這裏(http://stackoverflow.com/questions/4553605/difference-between-onstart-and-onresume/4653671#4653671) – Gunaseelan

回答

-1

當你按返回第一的onResume方法調用,並且在OnCreate後會呼籲sure..But你甚至可以處理這種行爲。

+2

不是。首先調用'onCreate' _can_然後調用'onResume' ** **將被明確地調用 – meredrica

1

When a user clicks on the link, I get the event on the manifest and opens ActivityB.那麼這意味着你在堆棧的頂部將ActivityB ...這是預期。你可以做的是在你打開ActivityB之前致電finish()ActivityA。通過這種方式,您可以從堆棧中刪除ActivityA。當你從ActivityB回來時,那麼應用程序將顯示ActivityA之前的內容 - 如果有的話。

在你的情況,ActivityA似乎是由Android系統被破壞以回收資源(內存通常情況下)。或者,也許你已經檢查了Developer Options,並且你已經在那裏檢查了Don't keep activities

編輯:因爲下面從@merendica的正確性合理和公正的評論,也向下選民: 在你ActivityAonCreate()你知道,如果該活動是通過檢查重建與否,如果Bundle屬性不是空:

if(savedInstance == null) { 
// activity newly created 
} else { 
// activity re-created either because of screen rotation 
// or user returned at some point to this activity 
} 

因此,如果活動重新創建,請不要調用您當前正在使用的任何邏輯。

+0

這不是OP想要的。 – meredrica

+0

不好意思,請問您能否就評論和投票原因精心準備? – gunar

+0

OP問他可以做什麼,而不是如何擺脫舊活動('我只是回去')。此外,標題提示僅「調用onStart」。你的答案在技術上是正確的,但它不適用於這個問題:) – meredrica

0

這正是有發生。 Android出於某種原因銷燬Activity(例如低RAM),因此必須重新創建。如果您不希望在活動實施State Saving中丟失數據。您無法更改Android生命週期,並且對它進行處理將導致災難。

相關問題