3

我正在开发一个日历应用程序,并使用 textview 作为日历单元格,当我在启动应用程序后检查 logcat 时,我发现来自 Choreographer 的这条消息“跳过 76 帧!应用程序可能在其主线程上做了太多工作”。我知道我正在创建很多文本视图(120),但是我怎样才能在不影响我的应用程序性能的情况下构建我的日历?是否有另一种方法来构建支持事件的日历?

4

5 回答 5

1

120 个文本视图似乎很多,特别是似乎需要几个屏幕的数据。

当您有多个数据屏幕时,考虑使用适配器视图是合乎逻辑的,例如ListViewGridView. 适配器视图使用视图回收将在任何给定时间使用的视图数量限制为大约一个屏幕的价值。

于 2015-01-14T20:46:47.970 回答
0

由于您正在制作日历,因此事先知道单元格的数量,考虑可能会膨胀包含单元格的布局,并且使用一个命令设置整个布局,然后您只需填写 TextViews 的文本?

于 2013-07-04T06:19:03.243 回答
0

您是否有理由不使用Pickers

如果您需要滚动自己的控件,则需要将任何繁重的工作转移到另一个线程。你可以

1) 使用 java Runnable 接口或 Thread 类,可能带有匿名内部类(参见此处)。

2)使用FutureTask + executor service(这里是一个例子)。

于 2013-07-03T22:15:25.117 回答
0

我进行了搜索,发现了这个链接:http: //developer.android.com/reference/android/view/Choreographer.html。这是 API 16 中引入的一个新类。

Choreographer 允许应用程序将自己连接到 vsync,并适当地计时以提高性能。

Android 视图动画在内部使用 Choreographer 的目的相同:正确计时动画并可能提高性能。

由于 Choreographer 被告知每个 vsync 事件,因此我可以判断 Choreographer.post* api 传递的其中一个 Runnables 是否没有在一帧的时间内完成,从而导致帧被跳过。

据我了解,Choreographer 只能检测到跳帧。它无法说明为什么会发生这种情况。

消息“应用程序可能在其主线程上做的工作过多。” 可能会产生误导。

你可以参考这个问题

于 2015-01-22T07:03:06.493 回答
-1

除非我确定我的应用程序表现不佳,否则我不愿意进行任何更改。我经常在我的模拟器上看到这条消息,有时是在 Android 仍在启动时,有时是在运行 Google 提供的简单 osample 应用程序时。这值得一读:

编舞(697):跳过152帧!调试日志

于 2013-07-04T01:28:30.420 回答