博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android postDelay+Dialog引起的窗体泄露
阅读量:7009 次
发布时间:2019-06-28

本文共 946 字,大约阅读时间需要 3 分钟。

hot3.png

1.问题描述

Android中消息队列postDelay+Dialog引起的窗体泄露的主要原因是,当床窗体压入栈或者finish掉后,Activity由于需要处理postDelay而不能及时销毁,因此造成了一个问题,当dialog触发show方法时,由于window和activity已经分开了,因此便会造成窗体泄露。

1.WindowManager$BadTokenException

错误描述:android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@536682c4 is not valid; is your activity running?

 

2.解决办法

使用一个变量检测当前activity是否处于活动状态

private boolean isActive = true;public void onResume(){    super.onResume();    isActive = true;}public void onPause(){    super.onPause();    isActive = false;}public boolean activityIsActivity(){  return isActive;}public void showAlertDialog(){        if(activityIsActive())  //只有窗体处于活动状态时执行此程序        {        	AlertDialog.Builder builder = new AlertDialog.Builder(activity);        	builder.setTitle("hello world")        		.setCancelable(false)        		.setMessage("Hello");        	builder.create().show();	}}

 

 

转载于:https://my.oschina.net/ososchina/blog/348332

你可能感兴趣的文章
SpringBoot整合Kotlin构建Web服务
查看>>
基于Mixin Network的PHP比特币开发教程 之一:创建机器人
查看>>
区块链是一个公共数据库,要放在一个块内
查看>>
vuex实现及简略解析
查看>>
Docker 使用 supervisord 管理 lumen队列与crontab
查看>>
vue-router源码解析(二)插件实现
查看>>
危险 AI 花名册
查看>>
日常工作-处理Windows下PHPStudy中的Apache无法启动的解决方法
查看>>
Windows Server已可安装Docker,Azure开始支持Mesosphere
查看>>
React从入门到精通系列之(15)不可控组件
查看>>
与Susan Fowler探讨生产就绪微服务之问答
查看>>
JCP EC投票反对Java平台模块系统
查看>>
Liftbridge为NATS提供了类Kafka的日志API
查看>>
Realm为Node.js发布对象数据库
查看>>
[译] 如何运用新技术提升网页速度和性能
查看>>
全域赋能和智慧全球,阿里巴巴大数据技术前瞻与案例
查看>>
90%炒币者亏钱,区块链“撒币时代”结束了
查看>>
冬天来了,让Sleep System智能床垫帮你暖床!
查看>>
2017洛客大会成功落幕, 全球“洛客”开启“想象力时代”
查看>>
关于区块链革命你必须知道的事实
查看>>