Я использую постоянное обновление местоположения аутентифицированного пользователя в моем приложении.Когда я выхожу из приложения, происходит сбой.Я понял, что приложение зависает из-за обновления местоположения, поэтому я решил удалить обновление местоположения, используя locmngr.removeUpdates(this)
, если нет аутентифицированного пользователя.Когда пользователь нажимает на logout mAath.getUid()
, он становится нулевым, и я получаю ошибку: Attempt to invoke virtual method 'boolean java.lang.String.isEmpty()' on a null object reference
.
try {
locmngr.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 7, 30, new LocationListener() {
@Override
public void onLocationChanged(final Location location) {
// Add a marker at your current location and move the camera
Log.e("location", location.toString());
Log.e("location", "updating");
// Toast.makeText(ProfileNavigation.this, "Location : "+location.getLatitude()+" , "+location.getLongitude(), Toast.LENGTH_SHORT).show();
//double a = location.getLongitude();
//double b = location.getLatitude();
if(!mAuth.getUid().isEmpty()) {
db.collection("UserProfile").document(mAuth.getUid()).get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
DocumentSnapshot documentSnapshot = task.getResult();
if (documentSnapshot.exists()) {
Log.e("maps", "updating");
Map<String, Object> data = new HashMap<>();
data.put("Latitude", location.getLatitude());
data.put("Longitude", location.getLongitude());
db.collection("UserProfile").document(mAuth.getUid())
.set(data, SetOptions.merge())
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Log.e("maps", "DocumentSnapshot successfully written!");
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.e("maps", "Error writing document", e);
}
});
} else {
Log.e("firestore", "Error getting documents.", task.getException());
}
} else {
Log.e("firestore", "Error getting documents.", task.getException());
}
}
});
}
else {
locmngr.removeUpdates(this);
}
}
}
}