那么在android4.0之后该如何监听呢
首先,当用户的操作使一个activity准备进入后台时,onUserLeaveHint方法会像activity的生命周期的一部分被调用。例如,当用户按下 Home键,
Activity#onUserLeaveHint()将会被回调。但是当来电等系统自动切换activity自动占据前台,Activity#onUserLeaveHint()将不会被回调。
这个方法用起来存在一定的局限性,因为启动另外一个Activity也会被调用
@Override protected void onUserLeaveHint() { super.onUserLeaveHint(); Log.i(TAG, "onUserLeaveHint"); finish(); }
另外一种方案是通过系统广播
final IntentFilter homeFilter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); context.registerReceiver(mHomeKeyReceiver, homeFilter);
动态注册一个广播可以带上ACTION_CLOSE_SYSTEM_DIALOGS的Filter可以监听系统点击按键的广播
在广播接收中获取bundle,在bundle中获取reason值
String action = intent.getAction(); String reason = intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY); if(reason == "recentapps")//多任务 if(reason == "homekey")//home