背景
在有些场景下,会使用到透明的activity做中转,但是有的时候可能没有成功finish这个透明的页面会阻止用户正常操作
譬如: 在微博登录SDK,有个透明的acitivity有的时候会没关掉
方案
网上的方案是
getWindow().addFlags( WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
| WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
//doSomeTing
return true;
}
这种方式在点击前一个页面时,这个页面的dispatchTouchEvent没有被调用到,透明的activity会永远存在,而且在启动截图的时候崩溃了,显然这样肯定有问题
我采用了这个方案,这个方案dispatchTouchEvent会被调用到
getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
|WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH);
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
//doSomeTing
finish();
return true;
}