我有一个奇怪的地方,OnSuccessListenerOnFailureListener不再被调用。一切正常,但是当我打开移动数据并呼叫OnSuccessListenerOnFailureListener以外的Wifi时。

如果我在下面的代码ref.set(update).....上放置一个断点,则确实命中了断点,但没有OnSuccessListenerOnFailureListener触发

 Map<String, String> update = new HashMap<>();
    update.put(ByteData.DATA, data);
    DocumentReference ref = firestore
            .collection(DEVICE_DATA)
            .document(FirestoreManager.getInstance().getUserId())
            .collection(DEVICE_DATA_STREAM)
            .document(batteryEntity.getEntityId());
    ref.set(update).addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
             // do some stuff
        }
    }).addOnSuccessListener(new OnSuccessListener<Void>() {
        @Override
        public void onSuccess(Void aVoid) {
             // do some stuff
        }
    });

最佳答案

当我打开移动数据和Wifi上网时,均未调用OnSuccessListenerOnFailureListener


那是预期的行为。仅当数据已写入服务器(或被服务器拒绝)后,才会调用完成侦听器。

侦听器不会为本地写入操作触发。如果本地写操作失败,则客户端将引发常规异常。

07-23 22:41