다음과 같은 상황이 있습니다.Firestore 질문을하기 전에 인터넷 데이터 연결을 확인하십시오.
응용 프로그램에는 사용자의 게시물을 좋아하는 옵션이 있습니다. 또한 Dislike 옵션도 있습니다.
Wi-Fi 또는 모바일 네트워크에 연결되어 있으면 제대로 작동합니다 (온라인 연결시).
문제 :
네트워크가 이동하면, 그것은 종종 연결되어 있지만 데이터 전송이 없으며 작동하지 않습니다됩니다. 이는 특정 지역의 지리적 및 운영자 문제입니다.
Like 옵션이 Like 또는 DisLike에 영향을 주려면 시간이 오래 걸립니다.
코드 :
@Override
public void onLikeSelected(final DocumentSnapshot like) {
if (checkConnection()){
final String idCurrentUser = mCurrentUser.getUid();
Task<QuerySnapshot> query = mDb.collection("Postagens").document(like.getId()).collection("Likes").whereEqualTo("id_userLike", idCurrentUser)
.get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot documentSnapshots) {
if(documentSnapshots.size() == 0) {
Map<String, Object> dado_usuario = new HashMap<>();
dado_usuario.put("id_userLike", mCurrentUser.getUid());
dado_usuario.put("timestamp", FieldValue.serverTimestamp());
mDb.collection("Postagens").document(like.getId()).collection("Likes").document(idCurrentUser).set(dado_usuario).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
}
});
} else { //utilizando else
mDb.collection("Postagens").document(like.getId()).collection("Likes").document(idCurrentUser).delete().addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
}
});
}
}
});
} else {
Toast.makeText(getActivity(), "Not Connection", Toast.LENGTH_SHORT).show();
}
}
public boolean checkConnection() {
boolean conectado;
ConnectivityManager conectivtyManager = (ConnectivityManager) getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
if (conectivtyManager.getActiveNetworkInfo() != null
&& conectivtyManager.getActiveNetworkInfo().isAvailable()
&& conectivtyManager.getActiveNetworkInfo().isConnected()) {
conectado = true;
} else {
conectado = false;
}
return conectado;
}
모바일 연결이 잘못되었거나 약한 때 나는이 작업을 수행 할 수있는 방법
는 데이터 연결을 처리하거나 치료를 변경하는 경우 될 경우 나도 몰라 Firestore 데이터베이스의 Like (onLikeSelected()) 옵션.
감사합니다.
실례합니다. 이것이 무엇을 할 것인지 설명해 주시겠습니까? @AlexMamo – TiagoIB
이 방법은 인터넷 연결을 확인합니다. 이게 니가 원하는거야? –
예, 정확하게 그 것입니다. 내가 (첫 번째 대답에서) 어떻게 테스트했는지 알 수 있듯이 연결이 연결됩니다. 그리고 귀하의 예에 따르면, 장치가 전송 중인지 테스트하십시오. 그 차이가 있습니까? @AlexMamo – TiagoIB