android - 如何区分按下home键和锁屏?

查看:277
本文介绍了android - 如何区分按下home键和锁屏?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

按下home键回到桌面会调用Activity的onPause()方法;
锁屏也会调用Activity的onPause()方法;
我想知道,该如何在程序中区分这两种操作,做不同的响应?

解决方案

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来说总是有好处的。

这篇关于android - 如何区分按下home键和锁屏?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆