android:当应用程序在后台时调暗屏幕

时间:2013-07-20 13:42:30

标签: android

我正在开发一个小应用程序,通过对话框屏幕显示用户的密码。

当按下主页按钮时,我需要调暗屏幕(在多任务窗口上),以便任何其他人都看不到密码。

当用户重新打开应用程序时,它会询问应用程序锁定。但是,如果用户打开密码对话框并按下主页按钮,用户最后查看的对话框和密码将保持可见(在多任务窗口上)一段时间(3-4秒!!),直到新对话框询问锁。

到目前为止,我尝试过可能的dialog.dissmiss()选项。只有当应用程序再次打开时才会解除对话(直到出现新的锁定对话框),即使我将dismiss()放入onPause,onStop等。

任何想法都赞赏。

我也试过了,

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

它们都没有真正起作用。

1 个答案:

答案 0 :(得分:0)

建议1:仔细检查您的实施情况。将对话框绑定到活动生命周期似乎是一个好主意(特别是为了避免泄漏的窗口错误,如here所述)

以下示例适用于我(使用来自Dialog的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:如果上述所有方法都失败,您可以考虑按照here所述覆盖主页按钮。我强烈反对它,因为这可能导致应用程序以用户不期望的方式工作。