最近发现,如果我在Activity A的Handler里面写了消息处理事件,然后从Activity A跳转到界面B之后,A的handler还在继续处理消息,我的项目中,用户进入到房间界面了,开始接收消息,然后他也可以跳转到设置界面去进行一些房间设置,假如这个时候用户被强制T出去了,不管他在哪个界面,都需要弹出对话框显示用户被踢出,之前用的普通的Dialog,然后只有房间界面显示出来的时候才会看到被踢出去的对话框,在设置界面看不到这个,然后被测试提bug了。。。一直知道用window可以做,可是试了之后发现主要问题在于,一个是响应window的View上面的button点击事件,一个是响应系统的back回退事件,这两个要么一个都不响应,要么只能响应一种,在网上找了很久也没找到好的方法。。最后只能加了一个布尔变量来使back按键可以响应。

    private WindowManager mWindowManager = null;private boolean isShow;private View view;public void showMsgWindow(String tipMessage, Context context) {mWindowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);WindowManager.LayoutParams params = createParams();view = View.inflate(context, R.layout.window, null);TextView message = (TextView) view.findViewById(R.id.window_message);Button cancel = (Button) view.findViewById(R.id.window_cancel);Button ok = (Button) view.findViewById(R.id.window_ok);message.setText(tipMessage);cancel.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {removeWindowManager();}});ok.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {removeWindowManager();}});mWindowManager.addView(view, params);isShow = true;}public void removeWindowManager() {mWindowManager.removeView(view);isShow = false;}public WindowManager.LayoutParams createParams() {WindowManager.LayoutParams params = new WindowManager.LayoutParams();// 类型params.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;params.flags = WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;params.format = PixelFormat.TRANSLUCENT;params.width = LayoutParams.MATCH_PARENT;params.height = LayoutParams.MATCH_PARENT;params.gravity = Gravity.CENTER;return params;}  //Activity的方法@Overridepublic void onBackPressed() {if (isShow) {removeWindowManager();} else {super.onBackPressed();}}

比较丑,勉强解决了问题。

========================更新

因为在小米华为等国产手机上可能会出现SYSTEM权限及以上的window被系统屏蔽掉的情况。。项目中已经改成了自定义action,发送LocalBroadcast的方式来启动一个Dialog风格的Activity,似乎没什么问题了。观察手机QQ的被挤下线的提示似乎也是这么一个Dialog风格的Activity。。。。

转载于:https://www.cnblogs.com/BezierCurve/p/4556458.html

android 弹出一个在桌面上出现的window相关推荐

  1. Android 弹出 Toast 时取消上一个 Toast(完美方案)增加同步

    Toast重复显示解决方法: private Toast mToast; public void showToast(String text) { if(mToast == null) { mToas ...

  2. android 弹窗确认,弹出一个带确认和取消的dialog实例

    实例如下: /** * 弹出一个带确认和取消的dialog * @param context * @param title * @param msg * @param okbutton * @para ...

  3. android 键盘将底部视图顶起,android 弹出软键盘将底部视图顶起问题

    今天要做一个搜索功能,搜索界面采用AutoCompleteTextView做搜索条,然后下面用listview来显示搜索结果,而我的主界面是在底 部用tab做了一个主界面导航,其中有一个搜索按钮,因为 ...

  4. 经常使用的android弹出对话框

    我们在平时做开发的时候,免不了会用到各种各样的对话框,相信有过其它平台开发经验的朋友都会知道,大部分的平台都仅仅提供了几个最简单的实现,假设我们想实现自己特定需求的对话框,大家可能首先会想到,通过继承 ...

  5. android弹出选择usb,android 解决:默认情况下用于该USB设备 自动获取USB操作权限...

    很多android 的应用在使用USB设备时,总会遇到一个很烦人的问题. 即每次都会弹出对话框: 每次插入USB设备,都会弹出.每次选上默认情况下使用该USB设备.但总还是会弹出.用户体验很差. 似乎 ...

  6. 常用的android弹出对话框

    我们在平时做开发的时候,免不了会用到各种各样的对话框,相信有过其他平台开发经验的朋友都会知道,大部分的平台都只提供了几个最简单的实现,如果我们想实现自己特定需求的对话框,大家可能首先会想到,通过继承等 ...

  7. android 弹出PopupWindow后背景逐渐变暗

    今天,简单讲讲android在弹出  PopupWindow后如何使背景逐渐变暗. 我之前做的效果是在PopupWindow弹出时立即将背景变暗,这个也很简单. 在PopupWindow弹出时,将 ...

  8. android弹出对话框

    最近因为项目需求,要在一个service上面弹出一个菜单,菜单响应select事件,所以花了点时间把android弹出Dialog的各种方式都看了一下. 目前学习到的android有三种方式弹出对话框 ...

  9. android 弹窗有边框_常用的android弹出对话框

    我们在平时做开发的时候,免不了会用到各种各样的对话框,相信有过其他平台开发经验的朋友都会知道,大部分的平台都只提供了几个最简单的实现,如果我们想实现自己特定需求的对话框,大家可能首先会想到,通过继承等 ...

最新文章

  1. 遇到的浏览器兼容问题及应对方法
  2. python可以自学吗需要什么基础-我是一个毫无基础的菜鸟,想自学Python,该怎么入手?...
  3. 处理错误:ORA-27101: shared memory realm does not exist
  4. 学计算机科学与技术考研考哪些专业课程,计算机科学与技术考研考哪些科目 备考技巧有哪些...
  5. 关于Unity中的Mesh Collider碰撞器
  6. python dataframe遍历_在pandas中遍历DataFrame行的实现方法
  7. 设计模式 之 《抽象工厂模式》
  8. php mysql交互实例_php基于session实现数据库交互的类实例
  9. Android-EventBus 使用以及区别
  10. VB.NET连接远程Oracle
  11. 台式计算机打印机共享,只需两步台式和笔记本电脑可共享打印机
  12. Java 发送邮件的几种方式
  13. Halcon 排线检测|固定颜色检测
  14. Computer Vision 杂志对何恺明 Rethinking ImageNet Pre-training 的最新评论
  15. 1-3 5-7的c语言程序,C语言求1-1/3+1/5-1/7+...——小程序,大道理
  16. 什么是单例模式以及单例模式的几种实现
  17. 模块一:cursors模块
  18. 红旗linux10应用软件,红旗操作系统下载-红旗操作系统v10 官方版下载-6188手游网...
  19. JsonArray或者JsonObject转字符串后里面带有转义字符或者反斜杠的处理方式
  20. 基于Tushare一键生成股票基本面数据

热门文章

  1. (DML触发器)如何正确理解触发器的deleted表和inserted表(转)
  2. bzoj 2326: [HNOI2011]数学作业
  3. 2018.09.14 codechef Milestone(随机化算法)
  4. 【学习总结】之 3Blue1Brown系列
  5. import的几种用法
  6. edx错误的地方开始安装
  7. 比较数据库表结构之间的差异
  8. volatile 和 sig_atomic_tlinux
  9. Android ObjectOutputStream Serializable引发的血案
  10. 【剑指offer-Java版】37两个链表的第一个公共结点