SharedPreferences.Editor занимает слишком много времени - PullRequest
1 голос
/ 11 июля 2019

Я исправляю код из приложения 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...