J'ai besoin d'enregistrer "Un peu de texte" dans le stockage des périphériques toutes les 5 minutes peut-on me signaler la meilleure façon de le faire. Mais je ne veux pas que le thread principal se bloque et que le thread de journalisation soit actif tout le temps. J'ai essayé cela, mais il semble geler mon émulateur est-il une meilleure façon de faire la même choseExécution d'un service d'arrière-plan android sans geler l'interface utilisateur
public class DataWriteService extends Service {
private FileIOHelper fileHelper= new FileIOHelper("Test.txt");
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//Gets location and writes to a file
fileHelper.writeToFile(this, "Some text");
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
}
}
En citant [JavaDocs for 'Service'] (https://developer.android.com/reference/android/app/Service.html):" Un service n'est pas un thread "et, dans [le JavaDocs pour 'onStartCommand()'] (https://developer.android.com/reference/android/app/Service.html#onStartCommand (android.content.Intent,% 20int,% 20int)): "Notez que le système appelle ceci sur le thread principal de votre service ... Vous devez toujours éviter de bloquer la boucle d'événements du thread principal.Si vous faites des opérations longues, des appels réseau ou des E/S disque, vous devez lancer un nouveau thread ". Vous n'avez pas démarré de discussion, votre travail gèle donc votre interface utilisateur. – CommonsWare