Android 后台线程弹对话框导致程序崩溃(is not valid; is your activity running)

Exception:android.os.BinderProxy@f5f8627 is not valid; is your activity running? 异常之根本问题解决 Exception:android.os.BinderProxy@f5f8627 is not valid; is your activity running? 异常之根本问题解决最近在项目中遇到了一个棘手的异常问题,网上找了很多办法都没能解决,问题是:进入activity中弹出dialog加载进度报异常android.view.WindowManager$BadTokenException: U... 阅读详情

异常:android.view.WindowManager$BadTokenException: Unable to add window — token android.os.BinderProxy@438e7108 is not valid; is your activity running?

 

 

因为使用了AsyncTask 异步线程在线程完成以后的onPostExecute方法里面弹出窗口。

这个时候如果用户在onPostExecute调用之间按了返回按钮,activity已经onDestory了,
那么就会报出android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@4479b390 is not valid; is your activity running?

解决方法一在弹出窗口之前用Activity的isFinishing判断一下Activity是否还存在:

  1. protected void onPostExecute(Object result) {     
  2.     if (!isFinishing()) {     
  3.         showDialog(MY_DIALOG_ID);     
  4.     }     
  5. }    


解决方法二在show的时候捕获一下异常


以下是测试验证
运行这个小程序 默数4的时候按返回 如果不加异常捕获或者判断isFinish的话会崩溃。 

  1. public class DialogTestActivity extends Activity {     
  2.     @Override    
  3.     public void onCreate(Bundle savedInstanceState) {     
  4.         super.onCreate(savedInstanceState);     
  5.         setContentView(R.layout.main);     
  6.         new Task().execute();     
  7.     
  8.     }     
  9.     
  10.     private class Task extends AsyncTask<Void, Void, Void> {     
  11.     
  12.         @Override    
  13.         protected Void doInBackground(Void... params) {     
  14.             try {     
  15.                 Thread.sleep(5000);     
  16.             } catch (InterruptedException e) {     
  17.                 e.printStackTrace();     
  18.             }     
  19.             return null;     
  20.         }     
  21.     
  22.         @Override    
  23.         protected void onPostExecute(Void result) {     
  24.             super.onPostExecute(result);     
  25.             //if (!isFinishing()) {     
  26.                 //try {     
  27.                     createAlertDialog().show();     
  28.                 //} catch (Exception e) {     
  29.                 //}     
  30.             //}     
  31.         }     
  32.     
  33.     }     
  34.     
  35.     private AlertDialog createAlertDialog() {     
  36.         return new AlertDialog.Builder(DialogTestActivity.this).setTitle("fadfasdf")     
  37.                 .setPositiveButton("OK", new DialogInterface.OnClickListener() {     
  38.                     public void onClick(DialogInterface dialog, int whichButton) {     
  39.     
  40.                     }     
  41.                 }).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {     
  42.                     public void onClick(DialogInterface dialog, int whichButton) {     
  43.     
  44.                     }     
  45.                 }).create();     
  46.     }     
  47. }   
Android问题集(4):Unable to add window -- token android.os.BinderProxy@bf4921f is not valid; 问题描述公司某个产品有反馈,说是在进入某个界面时容易引发崩溃,要到了泵哭日志后发现,确实爆出了一个异常,非必现,偶发bug,一看就大概明白是啥原因了,自己就写了个demo,复现了这个问题,下面是报错日志E/AndroidRuntime: FATAL EXCEPTION: main Process: com.wisely, PID: 12063 阅读详情

相关推荐

Android后台弹窗实现原理、技术路径与合规替代方案深度解析

在Android应用开发中,窗口管理与系统权限是构建复杂交互功能的核心基础。Android系统通过WindowManagerService统一管理所有窗口的层级、显示与生命周期,并基于严格的沙箱模型和权限体系控制应用对系统资源的访问。这一设计在保障系统安全与用户体验的同时,也为需要突破常规前后台限制的特殊场景(如实时辅助工具、企业级监控应用)带来了技术挑战。从技术价值看,深入理解窗口令牌(Token)机制、系统服务(Binder)调用以及权限边界,有助于开发者构建更稳定、合规的高权限功能模块。常见的应用场景

weixin_33841722的博客 406

Anroid 异常:is not valid; is your activity running?

是由于有activity时依附于另一个activity的,当被依附的activity产生错误的时候,该activity没有了靠山而产生错误(或者是调用了一个已经被finish()的activity)。一般在创建alertdialog.builder是很容易见到。 对于这个错误还没有根本的解决办法,唯一的办法就是改变该activity依附于另一activity的事实,将其放入另一activit

机会是留给有准备的人 3万+

is not valid; is your activity running?

Anroid 异常:is not valid; is your activity running?     今天下午碰到一个很蹊跷的异常:android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@438e7108 is not valid; is your

编程进化论 1万+

关于android "is not valid; is your activity running?"的bug

今天组内的小伙伴,碰到了一个Android异常,当时正好也是闲着,帮忙看了下。   android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@443b7270 is not valid; is your activity runnin

江寒的博客 1055

Android之Dialog提示Unable to add window -- token is not valid; is your activity running?

1、问题 Dialog奔溃提示Unable to add window -- token android.os.BinderProxy@b251dbc is not valid; is your activity running? 2、解决办法 传递context到dialog的时候,要记得先判断状态是不是isFinishing或者isDestroyed状态,这个时候就不要再去show相关的dialog了,如果不加这个条件,自测不会奔溃 3、总结 Android开发

码莎拉蒂 4324

RK3588与FPGA高速PCIe通信:从理论带宽到实战优化的全流程解析

本文深入解析了瑞芯微RK3588与FPGA之间基于PCIe Gen2的高速通信全流程。从理论带宽计算(约1640MB/s)出发,详细拆解了硬件连接、驱动加载、DMA配置等关键步骤,并重点分享了中断优化、内存管理及高级调优等实战技巧,旨在帮助开发者从“跑通”到“跑好”,实现接近理论极限的稳定高效数据传输。

weixin_29175469的博客 333

Android 后台线程弹对话框导致程序崩溃(is not valid; is your activity running)(dialog总是牺牲)

异常:Android.view.WindowManager$BadTokenException: Unable to add window — tokenandroid.os.BinderProxy@438e7108 is not valid; is your activity running?     因为使用了AsyncTask 异步线程在线程完成以后的onPostE

病毒才俊 1909

使用IntelliJ IDEA配置版本管理(SVN和Git)

在开发过程中,版本管理是必不可少的一部分,它可以帮助团队协作、管理代码历史记录,并且提供了代码回滚和分支管理等功能。本文将介绍如何使用IntelliJ IDEA配置版本管理,包括SVN和Git两种方式,另外列举了常见的问题并指导修复,以帮助开发者更高效地进行代码管理和协作。

2871

BadTokenException:Unable to add window …… is your activity running?is not valid; is your activity ru

问题发生环境: TabAcitivity中的每个tab标签管理一个ActivityGroup,每个ActivityGroup管理多个Acitivity, 在其中一个Activity中在使用Spinner控件时,使用代码: resolutionSpinner = (Spinner) findViewById(R.id.resolutionSpinner); resolut

Sunnyfans的专栏 3980

ITK-snap进行分割区域标注、三维显示及改变显示颜色

在进行医学图像器官分割时,无论我们是用传统方法还是深度学习,最后肯定要用到手动分割的区域作为金标准来验证我们方法的精度。但是手动标注器官的轮廓是十分耗时的,这里我介绍一个比较简单的标注方法,以肺分割作为例子。 我们使用ITK-snap作为分割标注工具。 当切片间距离比较小时,比如1mm,一个患者的完整HRCT序列通常在200张以上,如果让医生一一进行分割区域标注是非常耗时乏味的。因此,我们可以使用最简单的阈值法比如OSTU,加上基本的形态学操作对肺进行粗分割得到粗略的分割掩码,在此基础上再手动的对分割结果进

u010409517的博客 2万+

逆变器、转换器、DCDC、继电器等器件的原理和作用

交流电变成直流电的过程:整流==》滤波==》稳压。

m0_61973119的博客 8030

Unable to add window -- token null is not valid; is your activity running 源码梳理解读

经过前后两次的分析,短短的一个方法调用却涉及到非常多的应用生命周期知识,可见理解AMS和WMS对我们开发中遇到的一些实际问题的根源排查确实能起到很大的作用,因此有时间确实还是应该多读系统源码。

落叶Ex的博客 2056

华为OD机试 双机位A卷 - 流量波峰 (C++ & Python & JAVA & JS & GO)

华为OD机试双机位A卷 流量波峰,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解

qq_45776114的博客 1377

is not valid; is your activity running?异常

异常内容: android.view.WindowManager$BadTokenException: Unable to add window – token android.os.BinderProxy@412ae140 is not valid; is your activity running? 报错位置: dialog.show(); 异常产生: 加载Activity时,有个弹窗

wapchief的博客 3217

手把手教你学Simulink——基于Simulink的无位置传感器PMSM滑模观测器(SMO)控制

本文基于Simulink平台实现无位置传感器PMSM滑模观测器(SMO)控制,解决了传统机械位置传感器存在的成本高、体积大、抗干扰差等问题。SMO通过滑模切换函数估算反电动势,进而获得转子位置和速度,具有强鲁棒性(参数变化20%误差仅0.4°)和良好低速性能(50rpm转矩衰减<5%)。文章详细介绍了PMSM数学模型、SMO算法设计、Simulink建模步骤及参数优化方法,提供了可直接工程应用的MATLAB代码和仿真模型,为电动汽车驱动、工业机器人等高精度控制场景提供了有效解决方案。

MHD0815的博客 229

下载和运行GitHub上的代码教程总结

从昨天开始就想着从GitHub上下载一个开源的Vue的实战项目,希望能从中学习更多的Vue的实用内容,结果搞了半天好不容易下载了,不知道怎么弄。然而,今天终于成功了,激动地我赶紧来记录一下。 如何从GitHub上下载自己需要的项目: 1.首先,你要有一个自己的GitHub(https://github.com/)的账号。关于如何注册GitHub的账号以及如何获取你的SSH密钥这个问题,请大家参...

不怕万人阻挡,只怕自己投降 29万+

错误笔记:unable to add window -- token null is not valid; is your activity running

今天在Android Studio中使用日期选择器(DatePickerDialog)时出现了一个错误,err提示为:unable to add window -- token null is not valid; is your activity running ,网上找到原因都不符合,最后发现是因为在context的设置上出现问题。...

weixin_51563850的博客 893

RT-DETR算法优化改进:DCNv4更快收敛、更高速度、更高性能,效果秒杀DCNv3、DCNv2等 ,助力检测

DCNv4更快收敛、更高速度、更高性能,完美和RT-DETR结合,助力涨点

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1323

token android.os.BinderProxy@163442e0 is not valid; is your activity running

最近项目中遇到这个异常,发生在dialog.show()的时候。 在第一次进入activity中显示正常,回退到前一个activity,再第二次进入该activity的时候就会崩溃,报错。 网上查了好多,也试过各种办法,都不能很好的解决,包括判断isFinishing,置空等,但是基本能断定问题发生在activity上 然后打印log,在activity的oncreate、onresume和

u010418640的博客 7217

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Android开发踩坑之PopupWindow "Unable to add window -- token null is not valid; is your activity running"

问题现象 关键崩溃的BS如下: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running? at android.view.ViewRootImpl.setView(ViewRootImpl.java:...

技术的学习与积累是个技术活 5924

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

java.lang.IllegalStateException: The display list is not valid. 错误分析

错误log: 11-13 10:00:40.346: E/AndroidRuntime(19762): java.lang.IllegalStateException: The display list is not valid. 11-13 10:00:40.346: E/AndroidRuntime(19762): at android.view.GLES20DisplayList.g

银灵子 4656

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

android.view.WindowManager$BadTokenException崩溃分类与解决。

关于android的一个常见错误:Unable to add window --token is not valid android.view.WindowManager$BadTokenException:Unabletoaddwindow--tokenandroid.os.BinderProxy@41791b20isnotvalid;isyouractivit...

qq_35874340的博客 594

android BadTokenException之token is not valid

Android利用ActivityGroup加载子Activity,子Activity调用对话框,弹出: 04-14 19:07:53.947: E/AndroidRuntime(857): android.view.WindowManager$BadTokenException: Unable to add window -- token android.app.LocalA...

jlins_you的专栏 312

display is not Valid解决办法

An error has occurred while drawing:java.lang.IllegalStateException: The display list is not valid.   我再编写一个RecyclerView的页面时,数据加载完成之后,点击进入Activity时,很卡并且无法上下滑动,查看日志发现如上信息,根据日志 HardwareRenderer….大致可

难不难的博客 5128

Dialog异常 Unable to add window, token not valid

好记性不如烂笔头问题描述 Activity 延时显示 Dialog ,在显示之前, Activity 已经销毁 报错 Unable to add window -- token android.os.BinderProxy@e6ee7d8 is not valid; is your activity running? 问题分析 错误信息很明确,是没有 token 导致的. 而 toke

hepann的博客 760
上一篇: android studio从布局文件中提取style
下一篇: 我对Android的理解
下沉的代码
博客等级 码龄12年 2粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值