(Haftungsausschluss: Es gibt eine Menge Fragen, die sich ergeben, wenn Leute fragen, ob Daten null/falsch sind, wenn asynchrone Operationen über Anfragen wie Facebook, Firebase usw. verwendet werden. Meine Absicht für diese Frage war es, allen eine einfache Antwort auf dieses Problem zu geben beginnend mit asynchronen Operationen in Android)
Ich versuche, Daten von einer meiner Operationen abzurufen, wenn ich sie mit Haltepunkten oder Protokollen debugge, sind die Werte vorhanden, aber wenn ich sie ausführe, sind sie immer null, wie kann ich das lösen?
Firebase
firebaseFirestore.collection("some collection").get()
.addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot documentSnapshots) {
//I want to return these values I receive here...
});
//...and use the returned value here.
GraphRequest request = GraphRequest.newGraphPathRequest(
accessToken,
"some path",
new GraphRequest.Callback() {
@Override
public void onCompleted(GraphResponse response) {
//I want to return these values I receive here...
}
});
request.executeAsync();
//...and use the returned value here.
Kotlin-Koroutine
var result: SomeResultType? = null
someScope.launch {
result = someSuspendFunctionToRetrieveSomething()
//I want to return the value I received here...
}
Log.d("result", result.toString()) //...but it is still null here.
Usw.