gpt4 book ai didi

android - 在 firestore 更新上启动一个函数

转载 作者:行者123 更新时间:2023-11-29 23:56:05 25 4
gpt4 key购买 nike

问题正如标题所暗示的那样简单。

再解释一下,我是 Android 编程的初学者,我需要我的应用程序在每次更新我的 firestore 时运行特定功能。

protected void onStart(){
super.onStart();
mDocRef.addSnapshotListener(new EventListener<DocumentSnapshot>() {
@Override
public void onEvent(DocumentSnapshot documentSnapshot, FirebaseFirestoreException e) {
Map<String,Object> SMSFlag = new HashMap<String, Object>();
String quotenum = documentSnapshot.getString(NUM_KEY);
String quotemsg = documentSnapshot.getString(SMS_KEY);

state = documentSnapshot.getString(STATE_KEY);
if (state.equals("tosend")) {
try {
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(quotenum, null, quotemsg, null, null);
Toast.makeText(MainActivity.this, "SMS Sent!", Toast.LENGTH_LONG).show();
} catch (Exception e1) {
Toast.makeText(MainActivity.this, "Error sending SMS: " + e, Toast.LENGTH_LONG).show();
}
SMSFlag.put(STATE_KEY, "sent");
mDocRef.set(SMSFlag);
state = documentSnapshot.getString(STATE_KEY);
}
}
});
}

这应该是发送一条消息。正如您在我使用状态 key 的代码中看到的那样,这是因为它发送 3 条有时是 4 条相同的消息。在实现状态后,它只发送一个(如预期的那样),有时发送两个。

我想知道是否有我可以替换 onStart() 的 android 方法,因为我认为问题出在方法本身。

我希望我已经很好地解释了自己。预先感谢任何愿意提供帮助的人

最佳答案

根据您提到的内容,我建议您将代码放在 onCreate 生命周期回调方法中:

protected void onCreate(){
super.onCreate();
mDocRef.addSnapshotListener(new EventListener<DocumentSnapshot>() {
@Override
public void onEvent(DocumentSnapshot documentSnapshot, FirebaseFirestoreException e) {
Map<String,Object> SMSFlag = new HashMap<String, Object>();
String quotenum = documentSnapshot.getString(NUM_KEY);
String quotemsg = documentSnapshot.getString(SMS_KEY);

state = documentSnapshot.getString(STATE_KEY);
if (state.equals("tosend")) {
try {
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(quotenum, null, quotemsg, null, null);
Toast.makeText(MainActivity.this, "SMS Sent!", Toast.LENGTH_LONG).show();
} catch (Exception e1) {
Toast.makeText(MainActivity.this, "Error sending SMS: " + e, Toast.LENGTH_LONG).show();
}
SMSFlag.put(STATE_KEY, "sent");
mDocRef.set(SMSFlag);
state = documentSnapshot.getString(STATE_KEY);
}
}
});
}

如果您检查 docs在生命周期中,您会看到 onStart 在 Activity 的生命周期内可能会被多次调用,这会将多个监听器附加到 mDocRef 引用。这可能是您收到多次调用的原因。

关于android - 在 firestore 更新上启动一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50340241/

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