【问题标题】:Too many clicks on a layout布局上的点击次数过多
【发布时间】:2015-12-14 15:25:21
【问题描述】:

我有一个包含一些按钮的布局。如果我快速点击按钮(像疯了一样)

我遇到了这个错误: 编舞:跳过X帧!应用程序可能在其主线程上做了太多工作。

这些按钮没有特定的背景或点击/点击监听器。

我觉得这些按钮的onDraw方法中断主线程太久了。

我可以使用标志或其他东西来防止这种情况吗?所以我想向 Choreographer/Looper 发送一条消息,以跳过所有事件,而不仅仅是某个帧。

如果我使用具有复杂层次结构的布局并点击带有侦听器的按钮,应用程序会冻结。加载屏幕/对话框对我来说不是一个选项...有什么想法吗?

这是我的片段的布局:(它在 FrameLayout 内)

<LinearLayout
    android:id="@+id/second_line"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="96dp"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_weight="1"
    android:weightSum="6"
    android:padding="0dp"
    android:layout_marginLeft="0dip"
    android:layout_marginRight="0dip"
    android:layout_marginTop="0dip"
    android:layout_marginBottom="0dip">
    <Button
        android:layout_width="161dp"
        android:layout_height="96dp"
        android:id="@+id/indicator3"
        android:padding="0dp"
        android:layout_marginLeft="0dip"
        android:layout_marginRight="0dip"
        android:layout_marginTop="0dip"
        android:layout_marginBottom="0dip"
        android:scaleType="fitXY"/>
    <Button
        android:layout_width="161dp"
        android:layout_height="96dp"
        android:id="@+id/indicator4"
        android:padding="0dp"
        android:layout_marginLeft="0dip"
        android:layout_marginRight="0dip"
        android:layout_marginTop="0dip"
        android:layout_marginBottom="0dip"
        android:scaleType="fitXY" />
    <Button
        android:layout_width="161dp"
        android:layout_height="96dp"
        android:id="@+id/indicator5"
        android:padding="0dp"
        android:layout_marginLeft="0dip"
        android:layout_marginRight="0dip"
        android:layout_marginTop="0dip"
        android:layout_marginBottom="0dip"
        android:scaleType="fitXY"/>
    <Button
        android:layout_width="161dp"
        android:layout_height="96dp"
        android:id="@+id/indicator6"
        android:padding="0dp"
        android:layout_marginLeft="0dip"
        android:layout_marginRight="0dip"
        android:layout_marginTop="0dip"
        android:layout_marginBottom="0dip"
        android:scaleType="fitXY" />
    <Button
        android:layout_width="161dp"
        android:layout_height="96dp"
        android:id="@+id/indicator7"
        android:padding="0dp"
        android:layout_marginLeft="0dip"
        android:layout_marginRight="0dip"
        android:layout_marginTop="0dip"
        android:layout_marginBottom="0dip"
        android:scaleType="fitXY"/>
    <Button
        android:layout_width="161dp"
        android:layout_height="96dp"
        android:id="@+id/indicator8"
        android:padding="0dp"
        android:layout_marginLeft="0dip"
        android:layout_marginRight="0dip"
        android:layout_marginTop="0dip"
        android:layout_marginBottom="0dip"
        android:scaleType="fitXY"/>
</LinearLayout>

【问题讨论】:

  • 你在用模拟器吗?
  • 请显示布局代码
  • 我在 HP Slate 10 Plus 中运行,而不是模拟器。
  • @StanislavBondar 用布局代码编辑了问题

标签: android click frame ondraw skip


【解决方案1】:

最后,我找到了解决方案。这是一个信息亭应用程序,所以我通过这篇文章禁用了通知栏:Prevent status bar for appearing android (modified)

每次点击都会触发一个事件以将视图添加到窗口。所以我检查视图是否已经添加到窗口中。解决了我的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-29
    • 2018-02-06
    • 1970-01-01
    • 2018-02-10
    • 1970-01-01
    相关资源
    最近更新 更多