布局上的点击次数过多
Too many clicks on a layout
我有一个包含一些按钮的布局。如果我非常快地点击按钮(像疯了一样)
我遇到了这个错误:
编舞:跳过 X 帧!应用程序可能在其主线程上做了太多工作。
这些按钮没有特定的背景或 click/tap 侦听器。
我认为这些按钮的 onDraw 方法中断主线程的时间太长了。
我可以使用标志或其他东西来防止这种情况发生吗?所以我想向 Choreographer/Looper 发送消息以跳过所有事件,而不仅仅是某些帧。
如果我使用具有复杂层次结构的布局并且我点击带有侦听器的按钮,应用程序将冻结。正在加载 screen/dialog 这对我来说不是一个选择...有什么想法吗?
这是我的片段的布局:(它在 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>
终于,我找到了解决办法。这是一个信息亭应用程序,所以我通过这个 post 禁用了通知栏:Prevent status bar for appearing android (modified)
每次点击都会触发一个事件,将视图添加到 window。所以我检查视图是否已经添加到 window 中。解决了我的问题。
我有一个包含一些按钮的布局。如果我非常快地点击按钮(像疯了一样)
我遇到了这个错误: 编舞:跳过 X 帧!应用程序可能在其主线程上做了太多工作。
这些按钮没有特定的背景或 click/tap 侦听器。
我认为这些按钮的 onDraw 方法中断主线程的时间太长了。
我可以使用标志或其他东西来防止这种情况发生吗?所以我想向 Choreographer/Looper 发送消息以跳过所有事件,而不仅仅是某些帧。
如果我使用具有复杂层次结构的布局并且我点击带有侦听器的按钮,应用程序将冻结。正在加载 screen/dialog 这对我来说不是一个选择...有什么想法吗?
这是我的片段的布局:(它在 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>
终于,我找到了解决办法。这是一个信息亭应用程序,所以我通过这个 post 禁用了通知栏:Prevent status bar for appearing android (modified)
每次点击都会触发一个事件,将视图添加到 window。所以我检查视图是否已经添加到 window 中。解决了我的问题。