2013-08-26 53 views
0

Iam有點驚訝與此。我有一個onResume()在我activity.Its調用,並在我的模擬器,但在一個物理設備三星星系說明爲特定與安裝的軟糖,它不叫。相反onCreate()被稱爲所有的時間。爲什麼會發生這種情況?onResume()不在物理設備中調用,而是在調用onCreate()

public void onResume(){ 
    super.onResume(); 
    if(firsttime){ 
     try { 
      Toast.makeText(getApplicationContext(), "Resuming Activity",Toast.LENGTH_LONG).show(); 
      addReminder(); 
     } catch(Exception exception) { 
      exception.printStackTrace(); 
     } 
    } else { 
     firsttime=true; 
    } 
} 

這是我code.firsttime是一個靜態布爾variable.It是用來防止的onResume()時,應用程序啓動首次

+0

後一些代碼。你怎麼知道它沒有被調用? – vilpe89

+0

完全postResResume方法 – Ruban

+0

'firsttime'不是'靜態int',而是'靜態布爾值',我想。 –

回答

0

考慮到您當前的情況,您應該將變量存儲在首選項中,而不是依賴活動生命週期,因爲生命週期取決於許多事情。 對這種情況使用靜態變量通常是不好的選擇。我認爲這應該可以解決您的問題。

+0

是的,當我的代碼被發現是失敗的時候,我改變了我的代碼。但是我想知道爲什麼會發生這種情況,儘管它在模擬器中運行,爲什麼它不在物理設備中運行? – PassionateProgrammer

+0

模擬器中發生的事情是,由於OS上的負載較少而導致保留靜態變量,因此活動不會被破壞,另一方面,設備中的活動正在被破壞,進程正在被殺死。靜態變量是垃圾收集和下次打開應用程序時,你會得到「假」,你期待「真」 – Pankaj

+0

好吧。這是一個很好的解釋。謝謝你的快速回復。:) – PassionateProgrammer

0

嘗試打印的onResume和檢查裏面的東西被稱爲它在LogCat .... onResume內的代碼可能會導致這種情況。 或者你能否詳細說明你的問題?

+0

代碼不屬於這裏的意見,請編輯您的問題,而不是。 'firsttime'不是'靜態int',而是'靜態布爾型' –

+0

對不起,因爲iam是堆棧溢出的新手。我編輯過它,並且正如你在我的實際代碼中所說的那樣是靜態布爾值。 – PassionateProgrammer

+0

這個「答案」更像是一個「評論」,真的。 –

0

我覺得這裏是什麼情況, 當你的應用程序不是頂級的應用程序,活動管理實際破壞活動,它只是叫

public void onSaveInstanceState(Bundle savedInstanceState) 

沒有

onStop 

叫,所以沒有

noResume 

將被調用。

這樣做的正確的,把這個活動的所有狀態時,當叫

public void onSaveInstanceState(Bundle savedInstanceState) 

,並在您的onCreate()函數,做這種事

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); // Always call the superclass first 

    // Check whether we're recreating a previously destroyed instance 
    if (savedInstanceState != null) { 
     // Restore value of members from saved state 
     mCurrentScore = savedInstanceState.getInt(STATE_SCORE); 
     mCurrentLevel = savedInstanceState.getInt(STATE_LEVEL); 
    } else { 
     // Probably initialize members with default values for a new instance 
    } 
    ... 
} 

檢查,如果你有一些保存的狀態。

大多數代碼來自Android開發者網站副本: http://developer.android.com/training/basics/activity-lifecycle/recreating.html

相關問題