finishOnCloseSystemDialogs解决Android画面问题

问题

在过往HMI开发中,遇到一些问题可以通过配置finishOnCloseSystemDialogs来解决:
1、singleTask的画面在后台时,按Home键后,竟然走了onStart–onResume–onPause–onStop的生命周期
2、画面显示中,按Home,在返回该画面,会闪烁一下之前的内容

通过在AndroidManifest的Activity中配置如下内容可以解决

// 当关闭系统窗口请求出现时,是否销毁Activity
// true为销毁
android:finishOnCloseSystemDialogs="true"

原理

为什么会有这样的效果呢,因为按Home键时,系统会发出Intent.ACTION_CLOSE_SYSTEM_DIALOGS广播,用来关闭系统Dialog。
Activity配置了如上内容后,就走destroy流程了。

另外如果想监听Home键,也可以通过ACTION_CLOSE_SYSTEM_DIALOGS广播哦

BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
    
    
	@Override
	public void onReceive(Context context, Intent intent) {
    
    
		if (intent.getAction().equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) {
    
    
			String reason = intent.getStringExtra("reason");
			if ("homekey".equals(reason)) {
    
    
				// Do something
			}
		}
	}
};

参考文章:
https://blog.csdn.net/ekeuy/article/details/39400939
https://www.cnblogs.com/cj5785/p/9893156.html

猜你喜欢

转载自blog.csdn.net/cshoney/article/details/120066614