解决:Unable to add window -- token android.os.BinderProxy is not valid; is your activity running?

这篇具有很好参考价值的文章主要介绍了解决:Unable to add window -- token android.os.BinderProxy is not valid; is your activity running?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

报错:Unable to add window – token android.os.BinderProxy is not valid; is your activity running?

这个问题是我想存储已经创建过的弹窗进行复用过程当中出现的报错,具体代码请看:

public abstract class BaseActivity extends AppCompatActivity {

	protected static ProgressDialog progressDialog = null;//定义了一个创建的弹窗

	/**
     * 在其子类当中调用此方法显示加载弹窗,弹窗不可被取消
     * @param title 标题
     * @param content 内容
     * @param style 进度条样式
     */
    protected void showLoadingDialog(@Nullable String title, @Nullable String content, int style) {
        if (progressDialog == null) {
            progressDialog = new ProgressDialog(BaseActivity.this);
            progressDialog.setProgressStyle(style);
            progressDialog.setTitle(TextUtils.isEmpty(title) ? "稍等" : title);
            progressDialog.setMessage(TextUtils.isEmpty(content) ? "加载中" : content);
            progressDialog.setCancelable(false);
            progressDialog.create();
        }

        progressDialog.show();
    }

}

在查看报错之后可以确定是 Context 上下文的问题。

在创建Dialog时需要在构造方法当中传递一个Context,如果这个上下文被销毁即这个Activity已经走了OnDestroy方法。那么这个上下文就无效了,这个dialog在再次被调用时就会报错。

大概明白报错原因之后,我尝试将这个 Context 设置为全局的Application。如下:

progressDialog = new ProgressDialog(Application.getContext());

结果依旧报错。
这是我意料之外的。
不给既然行不通,那就之内想其他办法。
既然dialog的上下文随时变动,这个context不能被销毁,我们可以考虑两种方式:文章来源地址https://www.toymoban.com/news/detail-493635.html

  1. 如果应用有一个全局都不会销毁的Activity页面(一般是主页),可以尝试在进入这个页面的 onCreate() 方法当中直接进行创建。只要这个页面不被销毁,这个弹窗就可以一直使用。
  2. 在页面销毁时将这个弹窗的引用置为 null 。此后其他页面显示弹窗时会根据对应页面的Context进行创建,而不会出现这种问题。
    eg.
	@Override
    protected void onDestroy() {
        progressDialog = null;//重置加载弹窗,activity引用可能已被销毁
        super.onDestroy();
    }

到了这里,关于解决:Unable to add window -- token android.os.BinderProxy is not valid; is your activity running?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Unable to add a source with url `` named `-1`.

    今天在发布私有库的时候,执行 pod repo push name name.podspec --allow-warnings --verbose .的时候遇到下面这个错误 Unable to add a source with url `` named -1 . (/usr/bin/git clone – -1 fatal: repository ‘’ does not exist ) You can try adding it manually in /Users/****/.cocoapods/repos or via pod repo add . 解决方法: pod rep

    2024年02月15日
    浏览(41)
  • 2023年 Android Studio Unable to find bundled Java version 解决方法

    2023年 Android Studio Unable to find bundled Java version 解决方法

    学习flutter过程中发现 Unable to find bundled Java version 错误 搜索网上的解决方案都不对 最后在 b站 https://www.bilibili.com/video/BV1S4411E7LY?p=17vd_source=d7cf0e2cd70b3cc57314d2efcb598c3d 教程的课件中找到了解决方哦 我的flutter版本 jdk jdk-19.0.2 操作系统 windows11 如果是macOS系统,在jbr同目录下创建一

    2023年04月08日
    浏览(48)
  • 几个Flutter常见诊断错误与解决Android toolchain - develop for Android devices X Unable to locate Android SDK

    几个Flutter常见诊断错误与解决Android toolchain - develop for Android devices X Unable to locate Android SDK

    几个Flutter常见诊断错误与解决 jcLee95:https://blog.csdn.net/qq_28550263 https://blog.csdn.net/qq_28550263/article/details/132869987 问题描述 原因分析 这个错误表示找不到Android SDK。可能的原因是Android Studio没有安装或者安装路径没有正确配置。 解决办法 问题描述 原因与解决 这个错误信息表明

    2024年02月04日
    浏览(14)
  • [Unity] Unable to add package [git地址] OpenSSL SSL_read: Connection was reset, errno 10054问题

    [Unity] Unable to add package [git地址] OpenSSL SSL_read: Connection was reset, errno 10054问题

    OpenSSL SSL_read: Connection was reset, errno 10054的问题 Cannot perform upm operation: Unable to add package Unable to add package [https://github.com/Whinarn/UnityMeshSimplifier.git] OpenSSL SSL_read: Connection was reset, errno 10054 在于该地址被墙了,访问不到, 开梯子即可解决 。 或者修改Host将Github的域名地址改为IP地址

    2024年02月11日
    浏览(14)
  • 解决Android Studio Unexpected tokens (use ; to separate expressions on the same line)

    @[TOC](Unexpected tokens (use ; to separate expressions on the same line)) 这个是在jitpack里面 找到的依赖 点击后面就可以导入自己需要的依赖了。

    2024年02月04日
    浏览(27)
  • 解决Windows安装Rabbitmq,运行rabbitmqctl status命令时报错unable to perform an operation on node ‘rabbit@…的方法

    解决Windows安装Rabbitmq,运行rabbitmqctl status命令时报错unable to perform an operation on node ‘rabbit@…的方法

    一、问题分析    可能是rabbitqm服务出错导致的问题,如果安装过程没问题,就是运行rabbitmqctl status命令时报错,那可能是环境变量没有设置对,根据我本人的情况,我建议按一下步骤来解决问题。 二、解决步骤 1,先看环境变量设置有没有问题 erl环境变量,没有就新建ERL

    2024年02月02日
    浏览(12)
  • Android Studio 解决Unable to make field private final java.lang.String java.io.File.path accessible错误!

    Android Studio 解决Unable to make field private final java.lang.String java.io.File.path accessible错误!

    目录 前言 一、项目环境 二、报错信息 三、问题分析 四、解决方法         java.lang.String java.io.File.path accessible\\\"。这个错误通常会在编译或运行项目时出现,导致项目无法正常运行。         这个错误的原因是因为 Android Studio 使用了一个名为 \\\"Instant Run\\\" 的功能,该功

    2024年02月03日
    浏览(16)
  • PCB解决(Failed to add class member)问题

    PCB解决(Failed to add class member)问题

    今天画板子时候发现一个之前没遇到的问题,就是在生成PCB时候会提示你Failed to add class member : XXX(未能添加类成员:XXX),然后同时会发现有些器件会提示不知道引脚,问题如图所示: 查了一下网上没有发现问题原图, 倒是有两个解决方案,一个是在创建一个PCB文件,在重新

    2024年02月13日
    浏览(9)
  • E45: ‘readonly‘ option is set (add ! to override)解决办法

    E45: ‘readonly‘ option is set (add ! to override)解决办法

    该错误为当前用户没有权限对文件作修改 一、解决办法: 当前用户没有权限对文件作修改,你有权限修改文件吗?如果是root权限,可以:wq! 强行保存退出; 该文件没有正确保存退出,正在打开状态,请别人关闭后再保存; 若该文件所有人都关闭了,提示有的人没有关闭,则

    2024年02月04日
    浏览(11)
  • Android报错:java.lang.RuntimeException: Unable to start activity ComponentInfo

    在A类去继承AppCompatActivity,用B类去继承A类时,出现了这样的错误: java.lang.RuntimeException: Unable to start activity ComponentInfo  目前尚未找出错误,也未能理解。 试着让B类去继承Activity时 ,登录之后页面也是可以进行跳转的,但是写的东西用到了一些方法,例如:getSupportFragmentM

    2024年02月06日
    浏览(13)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包