gpt4 book ai didi

java - 将对象添加到 Inherited FirebaseMessagingService 继承服务 (FCM) 的类上的 Realm 数据库

转载 作者:行者123 更新时间:2023-12-02 11:21:43 27 4
gpt4 key购买 nike

大家好,我在公共(public)构造函数(onMessageReceived)调用下面的方法(SaveMessage)FirebaseMessagingService用于将字符串保存在 Realm 中,但在从该表获取日期时收到通知后其为空

   public class FireBaseService extends FirebaseMessagingService {


public static int NOTIFICATION_ID = 1;
Handler handler;
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
generateNotification(remoteMessage.getNotification().getBody(),remoteMessage.getNotification().getTitle());

SaveMessage(remoteMessage.getNotification().getBody());
//AddList(remoteMessage.getData().get("message"));
//StartActvity(Integer.valueOf(remoteMessage.getData().get("key_1")));

}

public void SaveMessage(final String message){


Realm realm = Realm.getDefaultInstance();
realm.executeTransactionAsync(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
SimpleDateFormat simpleDateFormatTime = new SimpleDateFormat("HH:mm", Locale.getDefault());
String strTime = simpleDateFormatTime.format(new Date());
Number currentIdNum = realm.where(MessagePojo.class).max("id");

int nextId;
if (currentIdNum == null) {
nextId = 1;
} else {
nextId = currentIdNum.intValue() + 1;
}
MessagePojo messagePojo = realm.createObject(MessagePojo.class,nextId);
messagePojo.setDate(strTime);
messagePojo.setMessage(message);
realm.insertOrUpdate(messagePojo);
EventBus.getDefault().postSticky(true);
realm.close();
}
});


}
}

我在一个 fragment 中为此 Realm 表添加了更改监听器。

感谢您的阅读。

最佳答案

最后我用处理程序和循环器解决了这个问题,并且 RealmChangeListener 工作完美:

public void SaveMessage(final String message){
handler = new Handler(Looper.getMainLooper());
final Runnable runnable = new Runnable() {
@Override
public void run() {
final Realm realm = Realm.getDefaultInstance();
realm.executeTransactionAsync(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
SimpleDateFormat simpleDateFormatTime = new SimpleDateFormat("YY/MM/dd HH:mm", Locale.getDefault());
String strTime = simpleDateFormatTime.format(new Date());
Number currentIdNum = realm.where(MessagePojo.class).max("id");
int nextId;
if (currentIdNum == null) {
nextId = 1;
} else {
nextId = currentIdNum.intValue() + 1;
}
MessagePojo messagePojo = realm.createObject(MessagePojo.class,nextId);
messagePojo.setDate(strTime);
messagePojo.setMessage(message);
realm.insertOrUpdate(messagePojo); // using insert AP
// EventBus.getDefault().postSticky(true);
}},
new Realm.Transaction.OnSuccess() {
@Override
public void onSuccess() {
Log.e("service", "onSuccess: " );
realm.close();
}
},new Realm.Transaction.OnError() {
@Override
public void onError(Throwable error) {
Log.e("service", "onError: ",error );
}}
);
//handler.postDelayed(this, 500);

}
};
handler.postDelayed(runnable, 500);
}

关于java - 将对象添加到 Inherited FirebaseMessagingService 继承服务 (FCM) 的类上的 Realm 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49871631/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com