(1)单击/双击HOME键,系统会发送一个广播:ACTION_CLOSE_SYSTEM_DIALOGS;
在接收广播中的处理为:String reason = intent.getStringExtra("reason");
if (reason.equals("homekey")) {
// "home press"
}
if (reason.equals("recentapps")) {
// "home double click"
}
ps:当屏幕超时进行锁屏时;当用户按下电源按钮,长按或短按(不管有没跳出话框),进行锁屏时;android系统都会广播此Action(ACTION_CLOSE_SYSTEM_DIALOGS)消息。
(3)利用activity的onSaveInstance(Bundle outstate)方法,在界面暂时退出时,可将一些需要备份的数据保存到outstate中;下次再次启动该activity时,从onCreate的入参中取备份的数据。
在接收广播中的处理为:String reason = intent.getStringExtra("reason");
if (reason.equals("homekey")) {
// "home press"
}
if (reason.equals("recentapps")) {
// "home double click"
}
ps:当屏幕超时进行锁屏时;当用户按下电源按钮,长按或短按(不管有没跳出话框),进行锁屏时;android系统都会广播此Action(ACTION_CLOSE_SYSTEM_DIALOGS)消息。
此广播是在frameworks\base\services\java\com\android\server\am\ActivityManagerService.java里发送的Intent.ACTION_CLOSE_SYSTEM_DIALOGS
(2)在android低版本的SDK中,还有另一种方式可以获取HOME键的按下事件:
在activity中重写方法onAttachedToWindow():
@Override
public void onAttachedToWindow() {
getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
super.onAttachedToWindow();
}
然后在onKeyDown()函数中根据入参keyCode判断是否有HOME键的动作触发。(3)利用activity的onSaveInstance(Bundle outstate)方法,在界面暂时退出时,可将一些需要备份的数据保存到outstate中;下次再次启动该activity时,从onCreate的入参中取备份的数据。
本文介绍了在Android系统中如何监听HOME键的操作。一种方法是通过ActivityManagerService发送的Intent.ACTION_CLOSE_SYSTEM_DIALOGS广播,另一种是在低版本SDK的Activity中重写onAttachedToWindow方法,并设置window类型为WindowManager.LayoutParams.TYPE_KEYGUARD。
795

被折叠的 条评论
为什么被折叠?



