转自:http://blog.csdn.net/com360/article/details/6663586
更多参考:http://blog.csdn.net/dongxianfei/article/details/55049991
这个是我重新写的监听home键的方式,以前写的那些方式都不是很好用。现在的这种方式通过广播的方式监听home键,这个比较好使
1.首先是创建一个广播接受者
private BroadcastReceiver mHomeKeyEventReceiver = new BroadcastReceiver() {
String SYSTEM_REASON = "reason";
String SYSTEM_HOME_KEY = "homekey";
String SYSTEM_HOME_KEY_LONG = "recentapps";
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) {
String reason = intent.getStringExtra(SYSTEM_REASON);
if (TextUtils.equals(reason, SYSTEM_HOME_KEY)) {
//表示按了home键,程序到了后台
Toast.makeText(getApplicationContext(), "home", 1).show();
}else if(TextUtils.equals(reason, SYSTEM_HOME_KEY_LONG)){
//表示长按home键,显示最近使用的程序列表
}
}
}
};
2.注册监听
可以在Activity里注册,也可以在Service里面
//注册广播
registerReceiver(mHomeKeyEventReceiver, new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
3、取消注册
在注册的Activity或Service的onDestory方法中要记得取消注册:
@Override
protected void onDestory() {
super.onDestory();
unregisterReceiver(mHomeKeyEventReceiver);
}