我是Android SDK/API环境的新手。这是我第一次试着画一个图表。我尝试在模拟器上使用3个不同的免费库运行不同种类的示例代码,没有显示在布局屏幕上。日志猫正在重复如下信息:

 W/Trace(1378): Unexpected value from nativeGetEnabledTags: 0
 I/Choreographer(1378): Skipped 55 frames!  The application may be doing too much work on its main thread. 

当我运行一个与授权库的评估副本相关的示例代码时,这个问题并没有持续存在,图表也正常工作。


当前回答

UI线程延迟的另一个常见原因是SharedPreferences访问。当你调用PreferenceManager。getSharedPreferences和其他类似的方法,关联的.xml文件将立即在同一个线程中加载和解析。

解决这个问题的一个好方法是从后台线程触发第一次SharedPreference加载,越早越好(例如从你的Application类的onCreate开始)。这样,在您想要使用首选项对象时,首选项对象可能已经构造好了。

Unfortunately, sometimes reading a preference files is necessary during early phases of startup (e.g. in the initial Activity or even Application itself). In such cases it is still possible to avoid stalling UI by using MessageQueue.IdleHandler. Do everything else you need to perform on the main thread, then install the IdleHandler to execute code once your Activity have been fully drawn. In that Runnable you should be able to access SharedPreferences without delaying too many drawing operations and making Choreographer unhappy.

其他回答

对我来说,这是RoundedBackgroundColorSpan !在textview中,我删除了它(燃烧我的大脑来找到它,因为它没有出现在像Pixel 4 Xl或三星note 10+这样的真实智能手机中,也没有出现在模拟器中,但在芯片设备中如此缓慢的视图)。

还没有解决,但会解决的。对于我的小项目,有一个可组合的功能(按钮)和逻辑来检查是否“com. com”。在启动模拟器时,我在相同的日志中有以下内容:

I/Choreographer: Skipped 34 frames!  The application may be doing too much work on its main thread.

优化你的图片…不要使用大于100KB的图片…图像加载占用太多CPU,导致你的应用程序挂起。

首先阅读警告。它表示在主线程上有更多的负载。所以你要做的就是在线程中运行有更多工作的函数。

在这个问题上做了很多研究之后,我得到了解决方案,

在我的情况下,我使用的服务将运行每2秒和runonUIThread,我想知道问题是在那里,但根本没有。 我发现的下一个问题是我在五月的应用程序中使用大图像,这就是问题所在。

我删除了图像,并设置了新的图像。

结论:-检查你的代码是否有任何你正在使用的原始文件是大的。