android - 如何区分按下home键和锁屏?
本文介绍了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屋!
查看全文