You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: _drafts/2019-04-01-cloud_storage.md
+61-54Lines changed: 61 additions & 54 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -54,7 +54,6 @@ Wszystkie operacje na plikach, tzn. wysyłanie, pobieranie, usuwanie i zmiana me
54
54
{% highlight kotlin %}
55
55
private fun startUploadFile() {
56
56
//get file and create reference
57
-
val storageRef = FirebaseStorage.getInstance().reference
58
57
val file = Uri.fromFile(File("path/file.jpg"))
59
58
val fileRef = storageRef.child("images/${file.lastPathSegment}")
60
59
@@ -67,20 +66,17 @@ private fun startUploadFile() {
67
66
}
68
67
69
68
private fun startDownloadFile() {
70
-
val storageRef = FirebaseStorage.getInstance().reference
71
69
val file = File.createTempFile("images", "jpg")
72
70
val fileRef = storageRef.child("images/file.jpg")
73
71
val downloadTask = fileRef.getFile(file)
74
72
}
75
73
76
74
private fun startDeleteFile() {
77
-
val storageRef = FirebaseStorage.getInstance().reference
78
75
val fileRef = storageRef.child("images/file.jpg")
79
76
val deleteTask = fileRef.delete()
80
77
}
81
78
82
79
private fun startUpdateMetadata() {
83
-
val storageRef = FirebaseStorage.getInstance().reference
84
80
val fileRef = storageRef.child("images/file.jpg")
85
81
86
82
val metadata = StorageMetadata.Builder()
@@ -96,72 +92,83 @@ private fun startUpdateMetadata() {
96
92
Rozpoczęcie wykonywania zadania zwraca właściwy dla danej operacji obiekt rozszerzający klasę `StorageTask`, który pozwala na zarządzanie i monitorowanie statusu operacji poprzez podpięcie słuchaczy dla różnych stanów, tj. `OnProgressListener`, `OnPausedListener`, `OnSuccessListener`, `OnFailureListener`. Metody `pause`, `resume`, `cancel` umożliwiają manualne zarządzanie statusem zadania. W przypadku zamknięcia procesu aplikacji wszystkie zadania są przerywane. Należy więc zadbać o ich właściwe wznowienie w miejscu przerwania (nie od początku) co pozwoli na oszczędzenie czasu i transmisji danych użytkownika.
97
93
98
94
{% highlight kotlin %}
99
-
override fun onCreate(savedInstanceState: Bundle?) {
Przesyłanie kontynuowane jest w tle niezależnie od zmian cyklu życia `Aktywności` co pomimo niewątpliwej zalety może prowadzić do wycieku pamięci dla dodanych wcześniej obserwatorów. Aby temu zapobiec należy we właściwym miejscu cyklu życia wyrejestrować obiekty słuchaczy, a następnie zarejestrować ponownie pobierając instancje bieżącego zadania za pomocą metody `getActiveUploadTask` lub `getActiveDownloadTask`.
143
138
144
139
{% highlight kotlin %}
145
-
override fun onSaveInstanceState(outState: Bundle) {
146
-
super.onSaveInstanceState(outState)
147
-
//save the reference to upload task if is in progress
0 commit comments