2017-05-24 3 views
0

J'ai entendu dire que le royaume est aussi rapide que d'utiliser dans le fil principal. Mais parfois, quand j'insère ou met à jour mes données (même juste un texte!), Cela fait une erreur ANR et rien à faire. Je ne sais pas pourquoi c'est arrivé. parce qu'il n'y a pas de message d'erreur non plus.Le domaine provoque une erreur ANR sans message d'erreur.

J'ai vérifié en mode de débogage de sorte que j'ai trouvé le système est exécuté jusqu'à ce que

realm.executetransaction

puis, disparais point d'arrêt et rien à faire ... est-il une personne qui a un problème comme moi ..? Veuillez nous aider

+0

comprennent le code source –

+0

Si votre transaction de fil d'arrière-plan prend beaucoup de temps, puis l'ouverture d'une transaction sur thread d'interface utilisateur va bloquer le thread d'interface utilisateur. Il est également possible que quelqu'un dans votre code utilise 'realm.copyFromRealm()' même si ce n'est pas le cas. – EpicPandaForce

Répondre

0

Dans les documents du domaine, il est recommandé d'utiliser des transactions asynchrones lors de l'écriture dans le domaine à partir du thread de l'interface utilisateur, car l'écriture dans les transactions peut parfois bloquer. Cela peut provoquer ANR dans le thread principal. S'il vous plaît lire plus loin sur les transactions asynchrones ici: Realm docs.

Voici l'exemple échantillon pour la transaction async des docs:

RealmAsyncTask transaction = realm.executeTransactionAsync(new 
     Realm.Transaction() { 
      @Override 
      public void execute(Realm bgRealm) { 
       User user = bgRealm.createObject(User.class); 
       user.setName("John"); 
       user.setEmail("[email protected]"); 
      } 
     }, null);