gpt4 book ai didi

android - 设备锁定时如何检测事件?

转载 作者:行者123 更新时间:2023-11-30 04:01:48 25 4
gpt4 key购买 nike

在我的代码中,我试图了解设备锁定时启动的 Intent 。

例如:假设我的 Activity 正在运行,我按下电源按钮以锁定手机。启动 INTENT.ACTION_SCREEN_OFF。 Activity 暂停,屏幕变为空白。

所以我想要的是每当设备被用户锁定时我不想完成我的 Activity ,但如果用户按下主页按钮或后退按钮我正在完成 Activity 。为此,我编写了一个代码,但它不起作用。

我用过的代码

public void onResume()
{
super.onResume();
m_ScreenLocked = false;

// Intent and receiver to listen to screen lock
m_IntentFilter = new IntentFilter(Intent.ACTION_SCREEN_ON);
m_IntentFilter.addAction(Intent.ACTION_SCREEN_OFF);
m_BroadcastReceiver = new ScreenStateBroadcastReceiver();
registerReceiver(m_BroadcastReceiver, m_IntentFilter);
}

private final class ScreenStateBroadcastReceiver extends BroadcastReceiver
{
@Override
public void onReceive(final Context context, final Intent intent)
{
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF))
{
m_ScreenLocked = true;
}
else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON))
{
//other stuff
}
}
}

@Override
public void onStop()
{
super.onStop();
m_NoteManagerObject.setPageViewRunning(false);

if (!m_ScreenLocked)
{
unregisterReceiver(m_BroadcastReceiver);
finish();
}
else
{
unregisterReceiver(m_BroadcastReceiver);
}
}

最佳答案

当您在您的 Activity 中以编程方式注册接收器时,当您的 Activity 暂停时它不会收到广播。这里的文档很模糊,因为它们只是“建议”在 onPause() 中取消注册,但不要说当您的 Activity 暂停时接收器将无法工作。

然而,真正的问题是您为什么要这样做。作为用户,如果我在使用您的应用程序时屏幕熄灭,并且当我解锁屏幕时应用程序消失了,我会很生气。请记住,您无法区分用户按下电源按钮和屏幕只是超时。

无论如何,一个可能的解决方法是注册您的 Activity 以在您的 list 中接收这些操作。这不一定有效,因为并非所有 Intent 都可以在 list Intent 过滤器中注册。如果我记得,ACTION_SCREEN_* Intent 无法在您的 list 中注册。

另一种方法是在与您的 Activity 一起运行的服务中监听这些 Intent ,然后能够向您的 Activity 发送不同的 Intent 以告诉它自行完成。

关于android - 设备锁定时如何检测事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12381393/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com