2014-02-25 44 views
0

首先,我想說,我很抱歉模糊的標題。我不知道還有什麼可以說出這個問題。OnStart()在OnStop()之後調用,這對我的應用程序造成問題

我有2個活動(ActivityA,ActivityB)。在ActivityA中,我重寫了onStop()函數,並且我改變了單值中的X值。當我進入ActivityB並且onStart()被調用時,我檢查值X.問題是在onStop()之前調用onStart()onStart()函數中的值I檢查仍舊是onStop()更改之前的舊值。

我知道爲什麼onStart()onStop()之前被調用。我問你們是我目前遇到的這個問題的替代解決方案。

我需要在ActivityA中保存一個值,然後關閉它並且我需要檢查ActivityB中的相同值。 ActivityB可以從其他幾個活動訪問,而不僅僅是ActivityA。而且這些活動不會改變價值。

已解決 我改變了onStop()onPause()這工作。多謝你們!

+1

它完全取決於系統調用這些方法,更好的方法是使用onPause();和onResume();' – Skynet

+1

use onPause().. –

+0

暫停可能是最適合實現東西的地方,而不是OnStop()。 – RMachnik

回答

0

及其完全高達系統調用這些方法,更好的是使用onPause();onResume();

enter image description here

See what the Official Docs say here

一個活動的前景壽命到的onResume呼叫之間發生()直到相應的onPause()調用。在此期間,活動在所有其他活動之前,並與用戶進行交互。一個活動可以頻繁地在恢復狀態和暫停狀態之間進行 - 例如,當設備進入睡眠狀態,活動結果被傳送時,當新的意圖被傳送時 - 所以這些方法中的代碼應該相當輕量級。

3

不使用單身人士。 活動將Intent用作它們之間的通信通道。

做到這樣,在活動答:

Intent i = new Intent(this, ActivityB.class); 
i.putExtra("value", 10); 
startActivity(i); 

然後在活動B,你(在任何時候你想要的):

int value = getIntent.getIntExtra("value", 0); 

也適用於雙,字符串,浮點型,捆綁,陣列等,如所見in the docs!

+0

我一直都在用這個!唯一的區別是我依靠傳遞給對象的良好的舊消息。 – Skynet

+1

這是在活動之間傳遞值的正確方法。 – Budius

+0

我使用單例,因爲我一直在應用程序中使用該值,並且我也序列化它 – Oya

相關問題