У меня есть 1000 строк в файле, который будет обслуживаться пользователю каждый раз, когда он загружает приложение.Производительность загрузки содержимого строки Android
Мой текущий подход:
MainActivity: OnCreate: Запустите AsyncTask
AsyncTask onPreExecute: показать прогресс dialiog
AsyncTask doInBackground: Проверьте, если ключ/значение присутствует в sharedpreferences, если да, то ничего не делайте в doInBackground. Если нет (первый пользователь), прочитайте из необработанного файла и создайте строковый конструктор. Храните содержимое StringBuilder в качестве пары ключевых значений в sharedpreferences.
AsyncTask onPostExecute: заполнить текст из общих разделов. Отключите диалог прогресса.
Код для чтения из файла в методе doInBackground является:
StringBuilder sb = new StringBuilder();
InputStream textStream = getBaseContext().getResources().openRawResource(R.raw.file);
BufferedReader bReader = new BufferedReader(new InputStreamReader(textStream));
String aJsonLine = null;
try {
while ((aJsonLine = bReader.readLine()) != null) {
sb.append(aJsonLine + System.getProperty("line.separator"));
}
} catch (IOException e) {
e.printStackTrace();
} finally{
try {
bReader.close();
textStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
Я вижу, что пользователь должен ждать около 9-10 секунд для первого запуска и 4-5 секунд для последующих запусков. Любые предложения по улучшению производительности в моем случае.
1000 строк быстро, не нужно Задача асинхронного программирования – 2013-03-25 05:52:08
Зависит также от скорости сети. Вы можете использовать сервис, если хотите, чтобы пользователь взаимодействовал с ui. Вы можете использовать robospice. – Raghunandan
@matheszabi, пользовательский интерфейс зависает в течение 10 секунд, если я не использую Async Task. – Sandeep