Bonjour mon application est gèle d'interface utilisateur pendant quelques secondes, alors qu'il récupère des données du réseau et le stocke dans dB, puis le montre à RecyclerView. Pour récupérer des données du réseau, j'utilise la modernisation et pour le stocker et récupérer la bibliothèque de la chambre DB. À la fois avec l'aide du modèle MVVM. Y a-t-il un moyen de remover le gel de l'interface utilisateur? Voici mon code:
dans la MainActivité lorsque vous cliquez sur Télécharger BTN P>
@Insert(onConflict = OnConflictStrategy.REPLACE) void insertEvents(EventsTable data); @Insert(onConflict = OnConflictStrategy.REPLACE) void insertTicketDates(TicketDatesTable datesTable);
3 Réponses :
pourquoi vous utilisez ce fil.sleep (150); appel est déjà une tâche d'arrière-plan dans la modernisation p>
Sans l'utiliser, il stocke uniquement le dernier article dans la chambre. Si je retarde 150ms, il insère chaque article. Je pensais que ça gèlera l'interface utilisateur mais pas comme ça
@Chandankushwaha je le sais
Si je ne attends pas 150ms à la fin de la boucle, il ne peut pas insérer toutes les données
Une meilleure solution serait de collecter tous vos objets requis dans un et supprimer toutes les déclarations de thread.sleep (150) car ils ne servent aucun but. p> ArrayList CODE>, puis transmettez-le sur le
asynccaptask code> et de là à
dao code > pour l'insertion en vrac. P>
J'ai essayé de supprimer le fil.sleep () et inséré directement la liste des éléments. Mais il n'entre que le dernier élément de la liste
J'ai utilisé le fil de dormir pour insérer un élément et attendre puis insérez le prochain.
Sans cela, il n'enserve qu'un élément
Veuillez partager le code dans lequel vous avez essayé d'insérer les éléments sous la forme d'une liste et supprimé thread.sleep () code>.
Si vous jugez approprié, veuillez partager votre solution au profit de tous.
Je l'ai partagé, j'ai déjà répondu à ma question. C'était un problème stupide
J'ai trouvé mon problème. Il s'agissait d'une entité d'initialisation avant de commencer la boucle:
Avant: p> après: p>
Utilisez l'analyse asynctique ou un thread pour traiter les données.
@Chandankushwaha dans mon viewModel ?? J'utilise déjà asyncktask dans le repo d'insertion