android - 如何区分按下home键和锁屏?
PHPz
PHPz 2017-04-17 17:07:11
[Android讨论组]
PHPz
PHPz

学习是最好的投资!

全部回复(2)
大家讲道理

Home键与锁屏建都是由系统来控制的,系统接收到这两个按键时会对当前应用作出处理,主要的都是onPause()onSaveInstance()onStop(),两个按键发生时Activigty的生命周期流程都是一样,因此你是无法通过生命周期的回调来进行判别。
但是系统在收到这两种按键时,会发送广播,所以你可以通过广播来接受按下的事件,并进行判断是哪个按键按下:

@Override
public void onReceive(Context context, Intent intent) {
    String action = intent.getAction();
    if (action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) {
        if (SYSTEM_DIALOG_REASON_HOME_KEY.equals(reason)) {
            // 短按Home键
            Log.i(LOG_TAG, "homekey");
        }
        else if (SYSTEM_DIALOG_REASON_RECENT_APPS.equals(reason)) {
            // 长按Home键 或者 activity切换键
            Log.i(LOG_TAG, "long press home key or activity switch");
        }
        else if (SYSTEM_DIALOG_REASON_LOCK.equals(reason)) {
            // 锁屏
            Log.i(LOG_TAG, "lock");
        }
    }
}

其实应用在非特殊情况下,不应该接受系统事件,尽量按照Google的建议对APP来说总是有好处的。

怪我咯

锁屏有系统广播,可以监听后做判断处理,action是Intent.ACTION_SCREEN_OFF

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号