我正在开发一个日历应用程序,并使用 textview 作为日历单元格,当我在启动应用程序后检查 logcat 时,我发现来自 Choreographer 的这条消息“跳过 76 帧!应用程序可能在其主线程上做了太多工作”。我知道我正在创建很多文本视图(120),但是我怎样才能在不影响我的应用程序性能的情况下构建我的日历?是否有另一种方法来构建支持事件的日历?
5 回答
120 个文本视图似乎很多,特别是似乎需要几个屏幕的数据。
当您有多个数据屏幕时,考虑使用适配器视图是合乎逻辑的,例如ListView
或GridView
. 适配器视图使用视图回收将在任何给定时间使用的视图数量限制为大约一个屏幕的价值。
由于您正在制作日历,因此事先知道单元格的数量,考虑可能会膨胀包含单元格的布局,并且使用一个命令设置整个布局,然后您只需填写 TextViews 的文本?
我进行了搜索,发现了这个链接:http: //developer.android.com/reference/android/view/Choreographer.html。这是 API 16 中引入的一个新类。
Choreographer 允许应用程序将自己连接到 vsync,并适当地计时以提高性能。
Android 视图动画在内部使用 Choreographer 的目的相同:正确计时动画并可能提高性能。
由于 Choreographer 被告知每个 vsync 事件,因此我可以判断 Choreographer.post* api 传递的其中一个 Runnables 是否没有在一帧的时间内完成,从而导致帧被跳过。
据我了解,Choreographer 只能检测到跳帧。它无法说明为什么会发生这种情况。
消息“应用程序可能在其主线程上做的工作过多。” 可能会产生误导。
除非我确定我的应用程序表现不佳,否则我不愿意进行任何更改。我经常在我的模拟器上看到这条消息,有时是在 Android 仍在启动时,有时是在运行 Google 提供的简单 osample 应用程序时。这值得一读: