У меня есть приложение, которое считывает файлы с Sdcard и выполняет некоторую интенсивную обработку.Создание потока в объекте приложения
Чтобы ускорить работу пользователя
Я создал подкласс объекта Application. В этом я создал Thread, где я получил ссылку на файлы на Sdcard и выполнил действия по запуску, чтобы после того, как активность была показана, пользователю не хватает лаги.
public class GAppClass extends Application {
class setMapDirThread extends Thread {
public void run() {
setMapDir();
}
}
public void onCreate() {
setMapDirThread objThread = new setMapDirThread();
objThread.start();
}
private void setMapDir() {
Log.d(TAG, "Inside initMapComponent");
String extDirName = Environment.getExternalStorageDirectory()
.getAbsolutePath();
/*
some processing related to opening and reading files from Sdcard and
allocating cache
*/
}
}
Является ли вышеупомянутый подход безопасным в использовании? т. Е. Создание потока в классе приложения для выполнения некоторой фоновой обработки - хороший подход или плохой? Замедляет ли приложение startUp? Можно ли создать поток, подобный этому, для чтения содержимого с Sdcard и выделения некоторой памяти для внутреннего кэширования?
У меня есть служба, которая создается сразу после получения BootComplete Intent. Таким образом, объект приложения будет создан во время загрузки. И сервис должен оставаться надолго, пока устройство не отключится. –
На самом деле создание кеша и чтение файлов с Sdcard осуществляется путем вызова сторонней api, и это занимает огромное время около 3 секунд (я думаю, что он выполняет иную инициализацию тоже). Это время не является устойчивым во время активности startUp. –
Что я намерен ускорить процесс инициализации, не задерживая время запуска приложения или активности, поэтому любые предложения? –