J'ai une application qui lit les fichiers de la carte SD et effectue un traitement intense.Création d'un thread dans l'objet Application
Pour accélérer l'expérience utilisateur
J'ai créé une sous-classe d'objet Application. Avec dans ce que j'ai créé un fil où, j'ai effectivement eu une référence aux fichiers sur Sdcard et a fait les activités de démarrage de sorte qu'une fois l'activité est affichée il n'y a pas de retard à l'utilisateur.
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
*/
}
}
L'approche mentionnée ci-dessus est-elle sûre à utiliser? En d'autres termes, créer un thread dans la classe d'application pour effectuer un traitement en arrière-plan est une bonne approche ou une mauvaise solution? Ralentit-il le démarrage de l'application? Est-il prudent de créer un fil comme celui-ci pour lire le contenu de Sdcard et allouer de la mémoire pour la mise en cache interne?
J'ai un service qui, est créé immédiatement après que BootComplete Intent est reçu. Donc l'objet d'application serait créé au moment du démarrage. Et le service est destiné à rester longtemps jusqu'à ce que l'appareil est éteint. –
En fait, la création du cache et la lecture des fichiers à partir de Sdcard se font par un appel à une tierce partie api et ça prend énormément de temps en environ 3 secondes (je pense qu'il fait aussi une autre initialisation). Ce temps n'est pas durable pendant l'activité startUp. –
ce que j'ai l'intention est d'accélérer le processus d'initialisation sans retarder l'application ou le temps de démarrage de l'activité, donc des suggestions? –