Ich benutze diese Bibliothek, die eine nette Fortschrittsleiste für Uploads anzeigt. https://github.com/gotev/android-upload-serviceUploadServiceBroadcastReceiver wird beendet, wenn die Aktivität beendet ist
die Dokumentation Nach mir ein BroadcastReceiver jedoch hinzugefügt, wenn der Upload als Dienst ausgeführt und schön aktualisiert:
Wenn der Benutzer, bei dem die Aktivität schließt die broadcastReceiver sie erklärt wurde die Fähigkeit verlieren, am Ende des Uploads zu antworten. Was kann ich tun, um den Verweis auf den BroadcastReceiver beizubehalten?
Hinweis: Ich habe versucht, den Empfänger in eine separate Singleton-Klasse zu verschieben, aber dies hat das Problem nicht gelöst.
Die broadcastReceiver:
public final UploadServiceBroadcastReceiver uploadReceiver =
new UploadServiceBroadcastReceiver() {
// you can override this progress method if you want to get
// the completion progress in percent (0 to 100)
// or if you need to know exactly how many bytes have been transferred
// override the method below this one
@Override
public void onProgress(String uploadId, int progress) {
Log.i(TAG, "The progress of the upload with ID "
+ uploadId + " is: " + progress);
}
@Override
public void onProgress(final String uploadId,
final long uploadedBytes,
final long totalBytes) {
Log.i(TAG, "Upload with ID " + uploadId +
" uploaded bytes: " + uploadedBytes
+ ", total: " + totalBytes);
}
@Override
public void onError(String uploadId, Exception exception) {
Log.e(TAG, "Error in upload with ID: " + uploadId + ". "
+ exception.getLocalizedMessage(), exception);
}
@Override
public void onCompleted(String uploadId,
int serverResponseCode,
byte[] serverResponseBody) {
// At this point, the serverResponseBody has been completely downloaded
// and is cached in memory, so no NetworkOnMainThread could happen here
Log.i(TAG, "Upload with ID " + uploadId
+ " has been completed with HTTP " + serverResponseCode
+ ". Response from server: "
+ new String(serverResponseBody));
String response = new String(serverResponseBody);
dialog.dismiss();
//If your server responds with a JSON, you can parse it
//from serverResponseBody using a library
//such as org.json (embedded in Android) or Google's gson
}
@Override
public void onCancelled(String uploadId) {
Log.i(TAG, "Upload with ID " + uploadId
+ " has been cancelled by the user");
}
};