扫码关注官方订阅号
学习是最好的投资!
Home键与锁屏建都是由系统来控制的,系统接收到这两个按键时会对当前应用作出处理,主要的都是onPause(),onSaveInstance(),onStop(),两个按键发生时Activigty的生命周期流程都是一样,因此你是无法通过生命周期的回调来进行判别。但是系统在收到这两种按键时,会发送广播,所以你可以通过广播来接受按下的事件,并进行判断是哪个按键按下:
Home
onPause()
onSaveInstance()
onStop()
@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
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
Home键与锁屏建都是由系统来控制的,系统接收到这两个按键时会对当前应用作出处理,主要的都是onPause(),onSaveInstance(),onStop(),两个按键发生时Activigty的生命周期流程都是一样,因此你是无法通过生命周期的回调来进行判别。但是系统在收到这两种按键时,会发送广播,所以你可以通过广播来接受按下的事件,并进行判断是哪个按键按下:
其实应用在非特殊情况下,不应该接受系统事件,尽量按照Google的建议对APP来说总是有好处的。
锁屏有系统广播,可以监听后做判断处理,action是Intent.ACTION_SCREEN_OFF