热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

android焦点切换,android–使用FLAG_ACTIVITY_REORDER_TO_FRONT在持续运行的UI活动之间切换会导致“无窗口焦点”错误...

我的目标是保持两个UI活动,并在它们之间来回切换,而不必杀死重启其中任何一个.但是使用FLAG_ACTIVITY_REORDER_TO_FRONT执行此操作会产生严重的副作用&#x

我的目标是保持两个UI活动,并在它们之间来回切换,而不必杀死/重启其中任何一个.但是使用FLAG_ACTIVITY_REORDER_TO_FRONT执行此操作会产生严重的副作用:当我恢复上一个活动(当前正在后台运行)时,会失去窗口焦点.

我通过花费5分钟创建一个包含两个“Hello World”活动的简单应用程序来证明这个问题.

>应用程序以活动A开始,活动A只显示一个名为“启动B”的按钮(没有别的).

>按此按钮 – 执行startActivity(FLAG_ACTIVITY_REORDER_TO_FRONT,ActivityB.class).

>活动B变为活动状态,只显示一个名为“启动A”的按钮.

>按此按钮 – 执行startActivity(FLAG_ACTIVITY_REORDER_TO_FRONT,ActivityA.class).

> Activity A的onResume()按预期调用,一切看起来都很好(我再次看到Activity A内容).

>按设备的返回键,这组错误将在100%的时间内发生:

E/ActivityManager( 513): Reason: Input dispatching timed out (Waiting

because no window has focus but there is a focused application that

may eventually add a window when it finishes starting up.)

I/WindowState( 513): WIN DEATH: Window{5294687c u0

com.android.launcher/com.android.launcher2.Launcher}

W/ViewRootImpl( 8066): Dropping event due to no window focus:

KeyEvent { action=ACTION_DOWN, keyCode=KEYCODE_BACK, scanCode=0,

metaState=0, flags=0xc8, repeatCount=1, eventTime=14965546,

downTime=14965045, deviceId=-1, source=0x101 }

(从用户的角度来看,窗口死亡的实际结果本质上是“崩溃” – Android会将用户从应用程序中抛回主屏幕,尽管技术上应用程序仍然在后台运行.)

我调试了这个并发现Activity A可见但没有焦点的原因是因为活动A的onWindowFocusChanged()没有像通常那样调用(即使调用onResume()).这与活动B在后台仍处于活动状态的事实有关(即使B已经失去焦点 – 为B调用onWindowFocusChanged(false),以及onStop()).我知道这是因为在上面的第4步之后如果我立即调用活动B上的finish(),将调用活动A的onWindowFocusChanged(true)并且一切正常.活动B仍然活跃但不集中的事实干扰了活动A重新获得焦点.这是一个Android错误还是我错过了什么?

请注意,如果活动A中有多个视图,并且我在上面的步骤6之后触摸其中一个视图,我会得到相同的“由于没有窗口焦点而丢弃事件”错误,尽管由于某种原因不是100%的时间.



推荐阅读
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文讨论了如何使用IF函数从基于有限输入列表的有限输出列表中获取输出,并提出了是否有更快/更有效的执行代码的方法。作者希望了解是否有办法缩短代码,并从自我开发的角度来看是否有更好的方法。提供的代码可以按原样工作,但作者想知道是否有更好的方法来执行这样的任务。 ... [详细]
  • vue使用
    关键词: ... [详细]
  • Monkey《大话移动——Android与iOS应用测试指南》的预购信息发布啦!
    Monkey《大话移动——Android与iOS应用测试指南》的预购信息已经发布,可以在京东和当当网进行预购。感谢几位大牛给出的书评,并呼吁大家的支持。明天京东的链接也将发布。 ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • 在开发app时,使用了butterknife后,在androidStudio打包apk时可能会遇到报错。为了解决这个问题,可以通过打开proguard-rules.pro文件进行代码混淆来解决。本文介绍了具体的混淆代码和方法。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 3.223.28周学习总结中的贪心作业收获及困惑
    本文是对3.223.28周学习总结中的贪心作业进行总结,作者在解题过程中参考了他人的代码,但前提是要先理解题目并有解题思路。作者分享了自己在贪心作业中的收获,同时提到了一道让他困惑的题目,即input details部分引发的疑惑。 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
author-avatar
水皱皱_446
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有