Я исправляю код из приложения 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 .
Итак, мое приложение продолжает ждать, пока Редактор закончит, есть идеи, почему это занимает так много времени?
Я не знаю, связано ли это, но эти сообщения Пропущенных фреймов обычно имеют высокий уровень после появления этого сообщения в Debug:
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