我正在尝试从parseObject中读取。我在那边有一个班级,我正在尝试从那里获取消息,但我只收到从设备发送的最后一条消息。
因此,如果我发送两条消息,则仅发送最后一条消息。
任何人都可以帮助我吗?
这是我的代码:
ParseQuery<ParseObject> query = ParseQuery.getQuery("SmsTable");
query.whereEqualTo("deviceId", android_id);
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> objects, com.parse.ParseException e) {
if (e == null) {
for (ParseObject smsObject : objects) {
Date time = (Date) smsObject.get("date");
myMsg = (String) smsObject.get("message");
usrNum = (String) smsObject.get("phoneNumber");
//happend = (boolean) smsObject.get("happend");
result = time;
}
} else {
}
}
});
if (System.currentTimeMillis() >= result.getTime()&& happend == false) {
// count++;
sendMsg2(myMsg, usrNum);
happend = true;
}
答案 0 :(得分:0)
使用它
for (ParseObject smsObject : objects) {
Date time = (Date) smsObject.get("date");
myMsg = (String) smsObject.get("message");
usrNum = (String) smsObject.get("phoneNumber");
//happend = (boolean) smsObject.get("happend");
result = time;
if (System.currentTimeMillis() >= result.getTime()&& happend == false) {
// count++;
sendMsg2(myMsg, usrNum);
happend = true;
}
}
我希望这能解决你的问题
答案 1 :(得分:0)
似乎myMsg
和usrNum
不是数组或列表。
在循环结束后,您只需拨打sendMsg2(myMsg, usrNum)
一次。这就是为什么你只收到最后一条消息。
将sendMsg2(myMsg, usrNum)
移至循环中。
答案 2 :(得分:0)
问题似乎是你已经将sendMsg2()定位在两者之外 - 回调范围和循环范围。如果你想要发送所有消息,你必须将sendMsg2()放在循环中。
ParseQuery<ParseObject> query = ParseQuery.getQuery("SmsTable");
query.whereEqualTo("deviceId", android_id);
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> objects, com.parse.ParseException e) {
if (e == null) {
for (ParseObject smsObject : objects) {
Date time = (Date) smsObject.get("date");
myMsg = (String) smsObject.get("message");
usrNum = (String) smsObject.get("phoneNumber");
//happend = (boolean) smsObject.get("happend");
result = time;
if (System.currentTimeMillis() >= result.getTime()&& happend == false) {
// count++;
sendMsg2(myMsg, usrNum);
happend = true;
}
}
} else {
}
}
});