首页
学习
活动
专区
圈层
工具
发布

如何判断 Activity 上是否有弹窗

今天来看个需求,如何判断 Activity 上面是否有弹窗,当然,简单的方式肯定有,例如在 Dialog show 的时候记录一下,但这种方式不够优雅,我们需要一款更通用的判断方式。...中去 get WindowManager,而是直接使用 getSystemService 拿到 Activity 的 WindowManager 来 addView PopWindow 内部是通过 getSystemService...所以,我们只需要判断在 mView 集合中,两个 activity 之间是否有存在其他的 View,如果有,那就是有弹窗,开发步骤为: registerActivityLifecycleCallbacks...那有没有一种方法,可以直接遍历 mView 集合就能找到目标 Activity 是否有弹窗呢?还真有,那就是 AppToken。...AppToken 来判断 在文章开头的概念中,我们了解到,PopWindow、Dialog 使用的都是 Activity 的 WindowManager,并且,该WindowManager 在初次创建时,构造函数传入的

3.9K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C++设计模式之SFINAE:用来检测类中是否有某个成员函数

    在这个过程中,我发现有些常见的SFINAE写法是有问题的,下面探讨一下。 举个例子,我们来check一下C++标准库的类中有没有push_back()成员函数。...如果是检测其他成员函数,比如size则不需要这么麻烦只要一个Helper即可。 而test函数,对于返回true的模板函数,其参数是一个指针类型。...如果需求是要检测任意成员函数,而不限定是哪个函数的话,毫无疑问,需要借助宏了。将上面的代码改变成宏的版本,push_back作为宏的一个参数,即可。 我这里为什么用push_back()举例呢?...has_hello::value << std::endl; std::cout ::value << std::endl; } OK,这个用来检测类中是否有...hello成员函数是可以的。

    5.4K20

    C++11 元编程 判断是否有std::hash特例并提供hash函数通用实现

    ,用于向标准库提供返回数据类型T哈希值(hash value)的哈希函数(hash function)。...那么可以考虑提供一个hash函数的通用实现,并在编译期通过模板函数自动判断类型是否有std::hash的特例实现,如果有就使用T自己的特例化实现,如果没有就使用通用的hash函数实现,下面是实现代码...type会自动选择缺省的哈希实现 std::unordered_map::type> map_tt; } 判断std::hash是否实现的元函数...另外,还可以单独写一个元函数来判断类型T是否有std::hash特例 #include #include #include #include...std::is_void(0))>::value}; //通过判断test(0)返回值是否为void来判断是否有hash特例 }; struct TT

    4.5K10

    MySQL在国产化ARM架构下的首个大坑

    为了满足监管要求,我们尝试在几个支付业务场景把MySQL数据库部署在国产化ARM服务器上。 业务刚上线时,数据库运行比较平稳。一段时间过后,我们就踩到了数据库在国产化架构下的首个大坑。...虽然从库有8个并行SQL线程数,但其中只有1-2个活跃线程,其他线程处于空闲状态,并且SQL线程间事务ID间隔很大,状态如下: 作为对比,X86架构下的半同步从库的回放并行度明显高于ARM节点。...以下是ARM架构下MySQL的协调线程CPU系统调用情况,get_slave_worker函数调用中,get_least_occupied_worker函数占比极高。...另外,get_least_occupied_worker函数中大部分CPU占用在__sched_yield。...sched_yield()系统调用函数一般用在用户态自旋锁上,用于将当前进程让出CPU,以便其他进程可以获得更多的CPU时间片。

    3.6K55

    【Groovy】集合遍历 ( 调用集合的 any 函数判定集合中是否有指定匹配规则的元素 | 代码示例 )

    文章目录 一、集合的 any 函数 二、集合的 any 函数代码示例 一、集合的 any 函数 ---- 集合的 any 函数 , 用于判断集合中是否有 满足闭包中的条件 的元素 , 返回一个布尔值 ,...Groovy", "Gradle"] 集合中 , it 的类型是集合元素类型 String ; 如果找到了 匹配闭包中的条件 的元素 , 则返回true ; 否则 , 返回 false ; 集合中的 any 函数运行...: /** * 迭代iterable的内容,并检查谓词是否至少对一个元素有效...// 为 ArrayList 设置初始值 def list = ["Java", "Kotlin", "Groovy", "Gradle"] // 查找集合中是否有...list.any{ it == "Java" } // true println isMatch // 查找集合中是否有

    1.8K20

    前端测试题:关于新特性Generator函数的描述,错误的是?

    考核内容: Generator函数的特点 题发散度: ★★★ 试题难度: ★★ 解题思路: Generator 函数是 ES6 提供的一种异步编程解决方案 形式上,Generator 函数是一个普通函数...,但是有两个特征。...一是,function关键字与函数名之间有一个星号;二是,函数体内部使用yield表达式,定义不同的内部状态 。 Generator 函数的调用方法与普通函数一样,也是在函数名后面加上一对圆括号。...也就是说,每次调用next方法,内部指针就从函数头部或上一次停下来的地方开始执行,直到遇到下一个yield表达式(或return语句)为止。...value属性表示当前的内部状态的值,是yield表达式后面那个表达式的值;done属性是一个布尔值,表示是否遍历结束。

    94610

    Iterator 、Generator

    其中,value是当前成员的值,done是一个表示遍历是否结束的布尔值,即表示是否有必要在一次调用next方法。...在语法上,Generator函数是一个状态机,封装了多个内部状态。 执行Generator函数会返回一个遍历器对象,也就是说,他还是一个遍历器对象生成函数。...返回的遍历器对象,可以依次遍历Generator函数内部的每一个状态。...形式上,Generator函数是一个普通函数,有两个特征: function和函数名之间有一个星号 函数体内部使用yield(产出)表达式,定义不同的内部状态 function* helloWorldGenerator...每次调用next方法,内部指针就从函数头部或上一次停下来的地方开始执行,直到遇到下一个yield表达式(或return语句)为止。

    70120

    python协程

    我们看看下面一段代码,在没有在解释器运行之前,你是否知道函数的最后输出的内容呢 #!...内部执行流程图如下 ? 对于正常函数之间的调用:是通过 栈执行的一个子程序,子程序调用总是一个入口,返回之后再继续跳转到另一个函数内部。...由于协程是 函数及 生成器的综合体,so,它拥有了两者的共同特性 可以携带参数 可以有返回值 可以使用for循环调用 可以使用send方法 看这个列子,注意理解协程函数是通过什么样的方式在执行过程中传递外部数据的...实际上是包含来两个步骤 发送数据到生成器内部 执行next()方法直到遇到下一个yield暂停执行 data 始终为空字符串,因为 r 其实与 data没有任何关系,在run函数未执行完毕之前,data...关键字 协程实际上是 : 生成器函数 使用g.send(None)触发协程 g.send("a") 像xie程内部发送数据 g.close()关闭协程

    69410

    Kafka系列9:面试题是否有必要深入了解其背后的原理?我觉得应该刨根究底(上)

    前言 在本文开始之前,作者一直有个疑惑,就是面试题是只写写问题和答案就草草了事,还是应该深入分析一下其背后发生的一些原理。...设置为 0 时代表 Producer 发送消息后就认为成功,消息有可能丢失。...Kafka 中的消息是否会丢失和重复消费? Kafka 是否会丢消息,答案相信仔细看过前面两个问题的同学都比较清楚了,这里就不在赘述了。...在低版本中,比如作者公司在使用的 Kafka0.8 版本中,还没有幂等性的特性的时候,消息有可能会重复被存储到 Kafka 上(原因见上一个问题的),在这种情况下消息肯定是会被重复消费的。...从上图可以看出,从从 Partition 上读取数据会有两个问题。

    75900

    Kafka系列9:面试题是否有必要深入了解其背后的原理?我觉得应该刨根究底(上)

    ​前言 在本文开始之前,作者一直有个疑惑,就是面试题是只写写问题和答案就草草了事,还是应该深入分析一下其背后发生的一些原理。...Kafka 中的消息是否会丢失和重复消费? 4. 为什么要使用 kafka,为什么要使用消息队列? 5. 为什么 Kafka 不支持读写分离?...Kafka 中的消息是否会丢失和重复消费? Kafka 是否会丢消息,答案相信仔细看过前面两个问题的同学都比较清楚了,这里就不在赘述了。...在低版本中,比如作者公司在使用的 Kafka0.8 版本中,还没有幂等性的特性的时候,消息有可能会重复被存储到 Kafka 上(原因见上一个问题的),在这种情况下消息肯定是会被重复消费的。...从上图可以看出,从从 Partition 上读取数据会有两个问题。

    46920

    从零开始学 Web 之 ES6(五)ES6基础语法三

    返回的遍历器对象,可以依次遍历 Generator 函数内部的每一个状态。 形式上,Generator 函数是一个普通函数,但是有两个特征。...一是,function关键字与函数名之间有一个星号; 二是,函数体内部使用yield表达式,定义不同的内部状态(yield在英语里的意思就是“产出”)。...= myGenerator(); 上面代码定义了一个 Generator 函数helloWorldGenerator,它内部有两个yield表达式(hello和world),即该函数有三个状态:hello...也就是说,每次调用next方法,内部指针就从函数头部或上一次停下来的地方开始执行,直到遇到下一个yield表达式(或return语句)为止。...value属性表示当前的内部状态的值,是yield表达式后面那个表达式的值;done属性是一个布尔值,表示是否遍历结束。

    51520

    Generator 函数的语法

    返回的遍历器对象,可以依次遍历 Generator 函数内部的每一个状态。 形式上,Generator 函数是一个普通函数,但是有两个特征。...一是,function关键字与函数名之间有一个星号;二是,函数体内部使用yield表达式,定义不同的内部状态(yield在英语里的意思就是“产出”)。...(); 上面代码定义了一个 Generator 函数helloWorldGenerator,它内部有两个yield表达式(hello和world),即该函数有三个状态:hello,world 和 return...也就是说,每次调用next方法,内部指针就从函数头部或上一次停下来的地方开始执行,直到遇到下一个yield表达式(或return语句)为止。...value属性表示当前的内部状态的值,是yield表达式后面那个表达式的值;done属性是一个布尔值,表示是否遍历结束。 ES6 没有规定,function关键字与函数名之间的星号,写在哪个位置。

    93220

    一文彻底搞懂迭代器与生成器函数

    此时打印的结果是 { value: 1, done: false } { value: 2, done: false } { value: undefined, done: true } 我们看下生成器函数内部是有...yield这样的关键字 实际上这就是内部函数的状态机,当你使用用生成器时,你调用next就会返回一个对象,并且像迭代器一样返回{value: xxx, done: false}因此在使用上,我们必须认清...本质上是通过生成器对象的prototype的Symbol.iterator连接了起来 生成器函数的return 当我们在生成器函数内部return时,那么当调用next迭代完所有的值时,继续调用next...控制多个函数按顺序执行 假设有一个场景,就是fn2依赖fn1的结果而决定是否是否执行,fn3依赖fn2的状态是否继续执行,那怎么设计呢?...生成器函数调用返回的是一个迭代器,具备迭代器所有特性,yield这个状态机只能在生成器函数内部使用 以实际例子对对象扩展支持迭代器特性,如果需要支持迭代器特征,那么必须原型上扩展Symbol.iterator

    66220
    领券