Saya memiliki objek ranah yang dibuat dalam aktivitas saya. Saya harus dapat mengakses objek ini dalam layanan yang saya buat. Namun saya mendapatkan kesalahan saat membuat objek Realm dalam layanan
mRealm = Realm.getInstance(getApplicationContext());
java.lang.IllegalStateException: Akses ranah dari thread yang salah. Objek ranah hanya dapat diakses di thread tempat objek tersebut dibuat
Sekarang saya mengerti ini berarti karena objek realm dibuat pada aktivitas saya, saya tidak dapat mengaksesnya dari thread latar belakang. Namun, saya tidak menemukan cara mudah untuk mengatasi hal ini selain membuat Handler Thread kustom saya sendiri, tetapi itu sepertinya cara yang kikuk untuk melakukannya.
Apakah saya melewatkan sesuatu di sini atau apakah tidak ada cara yang lebih baik untuk dapat mengakses objek Realm dari dalam thread yang berbeda?
Pembaruan:
Saya menggali lebih dalam untuk mengetahui bahwa dalam IntentService, metode onHandleIntent berjalan di thread terpisah dibandingkan metode lain dalam kelas. Oleh karena itu, saya tidak dapat membuat instance Realm tingkat kelas dan dapat berinteraksi dengannya di dalam dan di luar metode onHandleIntent. Itulah yang menyebabkan pengecualian thread. Selain membuat instance Realm terpisah di setiap metode yang saya perlukan untuk mengakses objek dan mengambilnya berulang kali, saya pikir jawaban Ilya Tretyakov akan menjadi yang terbaik. Saya dapat menyalin objek dari dunia nyata di konstruktor saya dan kemudian mengerjakannya sepanjang masa layanan. Metode apa pun yang perlu menulis kembali ke objek Realm perlu membuat instance instance Realmnya sendiri di dalam metode tersebut.
MyObject obj = mRealm.where(MyObject.class).equalTo("id", 123).findFirst()
. Saat Anda mengubahobj
di layanan, layanan di aktivitas akan diubah secara otomatis di loop UI berikutnya. Anda dapat menggunakan niat untuk meneruskan kunci utama di antara keduanya. Lihat realm.io/docs/java/latest/#threading dan realm.io/docs/java/latest/#intents - person beeender   schedule 19.02.2016