那么在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