2012-06-26 41 views
0

我的客戶希望他們的應用程序在應用程序啓動時或從睡眠中喚醒時始終顯示「警告」屏幕。我試圖創造我的主人活性的onResume()事件(每一個其他活動所繼承),但這會導致一個死循環:Android onResume from應用程序

  1. 活動被調用時,onResume()被解僱
  2. 警示屏火災,引起調用活動被暫停
  3. 用戶點擊OK接受消息時,用戶返回到先前屏幕
  4. 活性被喚醒
  5. 轉到1

即使我可以繞過無限循環,警報屏幕也會在新的活動加載時觸發。這就是我喜歡稱之爲壞事的原因。

有沒有辦法模仿onResume()事件,但在應用程序級別而不是在活動級別,這樣我可以避免這些情況,但仍然有應用程序喚醒時彈出警告?

回答

3

爲什麼不使用SharedPreferences。

http://android-er.blogspot.com/2011/01/example-of-using-sharedpreferencesedito.html

商店彈出被提出來了,如果它是5分鐘,或內部的東西,那就不要流行起來的時間。

這將打破你的循環,而不是完全惹惱用戶。

+0

謝謝......我改變onResume爲(1)檢索lastWarnedPref全局變量(lastTime),(2)獲取當前時間(currentTime),(3) )將currentTime寫入lastWarnedPref global(所以只要它們在活動中移動,它就不會出錯),並且(4)檢查currentTime和lastTime之間的差異。我讓它坐了幾分鐘,然後重新啓動應用程序,我得到了我的警告消息。然後,我立即退出並重新啓動應用程序,並沒有收到警告消息。這不完全是他們想要的,但它可能是他們得到的,除非我能找到更好的東西。 –

+0

噢,我還結束了添加一個onDestroy覆蓋,以清除退出時lastWarnedPref的值,以便它在離開應用程序並返回時顯示警告(這是我的客戶想要的)。再次感謝你,很好的回答。 –

0

我會寫一個方法來彈出警告,並在onPause中設置一個全局標誌。檢查onResume中的全局標誌,然後在彈出方法中重置它。簡化的僞代碼...

class myApplication Extends Application{ 
    boolean appIsPaused = false; 
} 

class myActivity Extends Activity{ 

    @Override 
    protected void onPause(){ 
     appIsPaused = true; 
    } 

    @Override 
    protected void onPause(){ 
     if (appIsPaused){ 
      showPopup(); 
     } 
    } 

    public void showPopUp{ 

    if (!appIsPaused){ 
     return; 
    } 

    appIsPaused = false; 

    } 


} 
+0

不幸的是,這並不能解決他們從活動轉移到活動的問題。每個活動都會導致它自己的onResume()被觸發,這將導致警告在每次移動時彈出。 –

相關問題