【问题标题】:Android Volume down key press causing ANR in my applicationAndroid 降低音量键导致我的应用程序出现 ANR
【发布时间】:2015-06-12 08:42:17
【问题描述】:

在测试过程中,我遇到了一个问题,当重复按下音量减小键时,我的应用程序会提示 ANR 对话框。我没有在我的活动中处理任何输入键事件。

日志 应用程序没有响应:AppWindowToken{71f775 token=Token{2123aeac ActivityRecord{332f745f u0 com.test/.uis.CallActivity t766}}}。自事件以来已 5006.8 毫秒,自等待开始以来已 5003.3 毫秒。原因:等待,因为没有窗口有焦点,但有一个焦点应用程序可能最终在完成启动时添加一个窗口。 04-06 16:54:34.885: I/WindowManager(1633): 输入事件调度超时发送到应用程序 AppWindowToken{71f775 token=Token{2123aeac ActivityRecord{332f745f u0

代码 最终的 WindowManager.LayoutParams 参数 = 新的 WindowManager.LayoutParams( WindowManager.LayoutParams.WRAP_CONTENT,WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,PixelFormat.TRANSLUCENT); 参数.dimAmount = 0.0f; // 昏暗的水平。 0.0 - 没有暗淡,1.0 - 完全 // 不透明 getWindow().setAttributes(params);

    getWindow().addFlags(
            WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
                    WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);

【问题讨论】:

  • 请提供完整的日志。您确定您没有使用任何服务或继承任何可能使用这些事件的类吗?
  • 不要只显示错误日志 - 显示导致它的代码。
  • 添加了更多代码,怀疑是 ANR。我没有使用任何这些事件。

标签: java android


【解决方案1】:

在该日志出现前 5 秒检查日志中发生的情况

ActivityRecord{332f745f u0 com.test/.uis.CallActivity t766}}}。它有 自事件以来已 5006.8 毫秒,自等待开始以来已 5003.3 毫秒。原因: 等待,因为没有窗口有焦点,但有一个有焦点的应用程序 完成启动后可能最终会添加一个窗口

特别检查输入事件(来自 InputDispatcher 或 InputReader 的日志)。这可能会提供线索。有时,如果您的系统负载过重(RAM 空间)并且您以高速率提供事件,则可能会发生这种情况。

我还建议你做以下事情:

  1. 您能否通过将任何其他应用程序保持在前台来尝试相同的操作。
  2. 请尝试在其他设备上进行检查,以防您尚未在任何其他设备上进行检查。(只是为了确保这是您的应用 问题)。

谢谢

【讨论】:

  • 感谢您的回复。还有一个更新,我通过将宽度和高度属性设置为 0 dp 来使用不可见活动。并尝试在屏幕锁定时显示它。 getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);并打算启动它包含 Intent.FLAG_ACTIVITY_REORDER_TO_FRONT 标志。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-05
  • 2011-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多