ich ein Bild Download mit Firebase Lagerung auf diese Weise:OnComplete nach Aktivität Zerstörung in FirebaseStorage genannt
StorageReference storageReference = FirebaseStorage.getInstance().getReference();
storageReference.child("images/").child("myimage.jpg").getBytes(Long.MAX_VALUE).addOnCompleteListener(this);
Und fügte ich einen Zuhörer zu wissen, wann der Download beendet:
@Override
public void onComplete(@NonNull Task<byte[]> task)
{
//stuff...
}
Das Problem tritt auf, wenn ich das Internet entferne, versuche, das Bild herunterzuladen und die Aktivität zu zerstören. Der Aufruf sollte zerstört werden, da die Aktivität zerstört wird, jedoch bleibt sie gespeichert. In der Tat, wenn ich das Internet aktiviere, wird die Methode onComplete aufgerufen, obwohl die Aktivität zerstört ist. Diese letzte ist nicht erstellt, ich habe alle mit Protokollen überprüft. Also wie kann ich den Anruf definitiv unterbrechen? Und warum wird die Methode aufgerufen?
Ihre Methode aufgerufen wird, weil Sie eine starke Erinnerung Bezug auf 'Activity' Objekt in einem anderen Thread zu halten, die es wie„Vollendung Hörer behandelt ". Es ist auch ziemlich schlecht für die Erinnerung, weil Aktivität nicht Müll gesammelt wird. Sie sollten Aktivitäten von Listenern entfernen, wenn diese zerstört sind. –