私は頻繁に使うwriteToRealmメソッドを持っています。そして、私は別のスレッドからそれを使用し、定型コードをカットする必要があります。この仕事のためのより良い方法は何ですか?異なるスレッドからのレルムトランザクション
private boolean writeToRealm(String user, String id) {
SubscriberObject subscriber = new SubscriberObject();
if(mRealm.where(SubscriberObject.class)
.equalTo(SubscriberObject.ID,id).findAll().isEmpty()
&&mRealm.where(SubscriberObject.class)
.equalTo(SubscriberObject.USERNAME,user).findAll().isEmpty()) {
subscriber.setId(id);
subscriber.setUsername(user);
mRealm.beginTransaction();
mRealm.insert(subscriber);
mRealm.commitTransaction();
return true;
}
return false;
}
私は以下の構造(またはこのようなもの)を使用する予定ですが、私は、正しい施工を作成することはできません:私は作成する必要が
public static Boolean writeToRealm(final String user,final String id){
Realm mRealm;
return Flowable.using(
mRealm = Realm.getDefaultInstance(),
new Function<Realm, Boolean>() {
@Override
public Boolean apply(@NonNull Realm realm) throws Exception {
SubscriberObject subscriber = new SubscriberObject();
if(realm.where(SubscriberObject.class)
.equalTo(SubscriberObject.ID,id).findAll().isEmpty()
&&realm.where(SubscriberObject.class)
.equalTo(SubscriberObject.USERNAME,user).findAll().isEmpty()) {
subscriber.setId(id);
subscriber.setUsername(user);
realm.beginTransaction();
realm.insert(subscriber);
realm.commitTransaction();
return true;
}
return false;
}
},
mRealm.close()).subscribeOn(Schedulers.io());
}
であってもよいしこのタスクのためにルーパーを持つスレッドクラス?
この方法と同様の方法をクリーンなアーキテクチャに統合する方法を教えてください。
を探して新しいスレッドを生成し、初めて重い操作をレルムオブジェクトをされてきていると思う、私はあなたを推薦しますExecutorService –
Sarthak Mittalを使ってみましたが、私はそれについて考えましたが、毎回インスタンスを作成しなければならず、変更を制御するルーパーが必要です。 – Delphian
UIスレッド以外にもルーパーが必要な場合は、HandlerThreadを使用してください。 :) –