我正在编写一个应用程序,该应用程序需要在设备锁定时在锁定屏幕上显示活动。我还有一个问题要问如何检测设备是否被锁定或设备的锁定超时。如果每个人都知道,请告诉我如何做到这一点。 问题超链接
这是第二个问题。
我有一个 mainactivity(A) 来启动服务。该服务注册一个接收器以检查设备是否屏幕关闭。当设备关闭屏幕时,将在锁定屏幕上显示一个活动(B)。我禁用键盘保护并在我的活动关闭后重新启用以模拟这一点。
但是,如果 mainactivity(A) 正在运行,无论是在屏幕上显示还是 onPause 状态,当屏幕关闭并显示 activity(B) 时,在我关闭 activity(B) 后,finish()
在 activity(B) 中,mainactivity (A) 解锁设备后显示,即使 mainactivity(A) 在设备关闭屏幕之前未显示在屏幕上。
这是接收器中的代码
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
Log.d("Receiver", "Screen ON");
} else {
Intent i = new Intent();
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.setClass(context, activityB.class);
context.startActivity(i);
Log.d("Receiver", "Screen OFF");
}
}
也许我的英语不好理解。
这是理想的流程
mainactivity(A) -> 按钮启动服务服务注册接收器接收器检测屏幕是否关闭,启动activityB activityB -> 按钮finish()
-> 显示键盘保护 -> 解锁 -> 显示设备锁定前的上一个视图/活动
但是 mainactivity(A) -> 启动服务 -> 服务注册接收器 -> 按主页按钮以最小化所有正在运行的应用程序/活动 -> 等待屏幕超时 -> 接收器检测屏幕关闭 -> 启动活动B -> 关闭活动B ->解锁 -> mainactivity(A) 显示
我猜问题出在i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
,activity(B) 是作为任务启动的,所以当 mainactivity(A) 运行时,关闭 activity(B) 会返回到 mainactivity(A)
PS如果我按下后退按钮关闭mainactivity(A),由于服务启动,当屏幕关闭时仍然显示activity(B),当activity(B)关闭时,不显示mainactivity(A)。
非常感谢。