2013-07-20 64 views
1

我正在開發一個小應用程序,該應用程序通過對話屏幕顯示用戶的密碼。android:在應用程序在後臺時調暗屏幕

當主頁按鈕被按下時,我需要調暗屏幕(在多任務窗口中),以便任何其他人看不到密碼。

當用戶重新打開應用程序時,它會詢問應用程序鎖定。但是,如果用戶離開密碼對話框打開並按下主頁按鈕,對話框和用戶最後看到的密碼保持可見(在多任務窗口中)一段時間(3-4秒!!),直到一個新的對話框詢問鎖。

到目前爲止,我嘗試過任何可能的dialog.dissmiss()選項。對話框僅在應用程序再次打開時解除(直到出現新的鎖定對話框),即使我在onPause,onStop等中放置解除()。

任何想法讚賞。

我也試過,

android.os.Process.killProcess(android.os.Process.myPid()); 
this.finish(); 
System.exit(0); 

他們沒有實際工作。

回答

0

建議1:仔細檢查您的實施。綁你的對話框,將活動週期似乎是一個不錯的主意(尤其要避免泄露窗口錯誤描述here

以下示例適用了很適合我(與coachMark正在從對話得出)

@Override 
protected void onResume() 
{ 
    log.debug("onResume"); 
    super.onResume(); 

    // Show the coachMark depending on saved preference values 
    coachMark.mayBeShow(); 
} 

@Override 
protected void onPause() 
{ 
    log.debug("onPause"); 

    // Hide the coachMark if it is showing to avoid leakedWindow errors 
    coachMark.maybeHide(); 

    super.onPause(); 
} 

onPause當您按下主頁按鈕時肯定會被調用,因此如果此方法對您不適用,請嘗試在acitivty lifecycle(onRestart(),onStart()和onResume())的重新啓動部分中重新創建對話並查看,如果它被正確解僱。


建議2:以上所有的失敗,你可能會考慮覆蓋home鍵描述here。我強烈建議不要這樣做,因爲這可能會導致應用程序以用戶所期望的方式工作。

+0

是的,我跟蹤日誌,就像你說的onPause()被主頁按鈕按下時調用。我刪除了對onStart()的重新創建並調用dismiss()onPause。當按下主頁按鈕時,應用程序直接進入背景,我仍然可以看到對話框(當然是在多任務窗口中)。 此外,解散如此緩慢,如3秒。當應用程序在3秒內重新打開時,我仍然可以看到對話框。 – user2226106

相關問題