2011-10-23 214 views
0

我想觸發顯示的東西在活動發生後,一個對話框,X秒(恢復,按鈕點擊等)延遲執行

  • 我有哪些選擇? (例如Thread,AsyncTask,Handler
  • 這些選項是否有特別的注意事項?例如我是否需要檢查活動是否仍然有效?

回答

3

使用handler.postDelayed(runnable, delayedms);

這是方法之一,您還可以使用AlaramManager。

對於AlaramManager,您的活動無需激活。和它應該是的處理程序。

+0

隨着處理程序,我如何驗證活動是積極的?通過AlarmManager,我如何連接到正確的上下文(當前活動的活動)來顯示對話框? – orip

+0

您可以在您的activity onPause()方法中使用handler.removeCallbacks(runnable),該方法將在您的活動失去焦點時移除計劃的操作。就報警管理員而言,我認爲它用於通知某種事情,或者做一些背景處理,而不是爲了顯示對話框的目的。 –

+0

+1,謝謝!如果沒有onPause被調用,我的活動會被殺死,但是處理器仍然處於活動狀態? – orip

0

我考慮過的一個選項:我可以創建一個透明視圖(使用<activity android:theme="@android:style/Theme.Translucent.NoTitleBar",如here所示),並創建一個對話框,而不是將對話框附加到現有視圖。

這很好,因爲我可以用延遲的意圖創建此活動。

當對話框關閉時,我需要確保調用finish()

我不確定如果只有原始活動仍處於活動狀態纔會發生這種情況。

+0

爲什麼不使用@android:style/Theme.Dialog? –