我正在修复来自Android应用程序的代码,该代码太慢并且收到诸如“跳过561帧!该应用程序可能在其主线程上做过多工作”之类的消息。一直。
我跟踪了花费了很长时间的内容,发现它是SharedPreferences.Editor
方法中的clearpreferences
。
我这样做了:
public void clearpreferences(String name) {
Log.d("RoTips", "CP I: " + new Date());
SharedPreferences sharedpreferences = app.contexto.getSharedPreferences(name, Context.MODE_PRIVATE);
Log.d("RoTips", "CP edit: " + new Date());
SharedPreferences.Editor editor = sharedpreferences.edit();
Log.d("RoTips", "CP clear: " + new Date());
editor.clear();
Log.d("RoTips", "CP commit: " + new Date());
editor.commit();
Log.d("RoTips", "CP F: " + new Date());
}
,我发现其他所有内容都花了不到一秒的时间,但是"SharedPreferences.Editor editor = sharedpreferences.edit();"
花了 6MIN 。
所以我的App一直在等待编辑器完成,为什么要花这么长时间呢?
我不知道它是否相关,但是在“调试”中出现此消息后,这些“跳帧”消息通常很高:
W/AudioCapabilities: Unsupported mime audio/mpeg-L1
W/AudioCapabilities: Unsupported mime audio/mpeg-L2
W/AudioCapabilities: Unsupported mime audio/x-ms-wma
之前:
W/VideoCapabilities: Unrecognized profile/level 1/32 for video/mp4v-es
W/VideoCapabilities: Unrecognized profile/level 32768/2 for video/mp4v-es
W/VideoCapabilities: Unrecognized profile/level 32768/64 for video/mp4v-es