Fix context memory leak

Signed-off-by: alperozturk <alper_ozturk@proton.me>
This commit is contained in:
alperozturk 2024-01-05 15:08:22 +01:00 committed by Alper Öztürk
parent 5a5b18bad0
commit 1ada24583d
2 changed files with 7 additions and 8 deletions

View file

@ -24,7 +24,6 @@ package com.nextcloud.client.files.downloader
import android.accounts.Account
import android.accounts.AccountManager
import android.accounts.OnAccountsUpdateListener
import android.annotation.SuppressLint
import android.app.PendingIntent
import android.content.Context
import androidx.core.util.component1
@ -66,7 +65,6 @@ class FileDownloadWorker(
companion object {
private val TAG = FileDownloadWorker::class.java.simpleName
@SuppressLint("StaticFieldLeak")
private var currentDownload: DownloadFileOperation? = null
const val FILES_SEPARATOR = ","

View file

@ -43,6 +43,7 @@ import com.owncloud.android.utils.FileStorageUtils;
import java.io.File;
import java.io.FileOutputStream;
import java.lang.ref.WeakReference;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
@ -62,7 +63,7 @@ public class DownloadFileOperation extends RemoteOperation {
private String packageName;
private DownloadType downloadType;
private Context context;
private final WeakReference<Context> context;
private Set<OnDatatransferProgressListener> dataTransferListeners = new HashSet<>();
private long modificationTimestamp;
private DownloadFileRemoteOperation downloadOperation;
@ -90,7 +91,7 @@ public class DownloadFileOperation extends RemoteOperation {
this.behaviour = behaviour;
this.activityName = activityName;
this.packageName = packageName;
this.context = context;
this.context = new WeakReference<>(context);
this.downloadType = downloadType;
}
@ -203,13 +204,13 @@ public class DownloadFileOperation extends RemoteOperation {
// decrypt file
if (file.isEncrypted()) {
FileDataStorageManager fileDataStorageManager = new FileDataStorageManager(user, context.getContentResolver());
FileDataStorageManager fileDataStorageManager = new FileDataStorageManager(user, context.get().getContentResolver());
OCFile parent = fileDataStorageManager.getFileByPath(file.getParentRemotePath());
DecryptedFolderMetadata metadata = EncryptionUtils.downloadFolderMetadata(parent,
client,
context,
context.get(),
user);
if (metadata == null) {
@ -227,7 +228,7 @@ public class DownloadFileOperation extends RemoteOperation {
key,
iv,
authenticationTag,
new ArbitraryDataProviderImpl(context),
new ArbitraryDataProviderImpl(context.get()),
user);
try (FileOutputStream fileOutputStream = new FileOutputStream(tmpFile)) {
@ -247,7 +248,7 @@ public class DownloadFileOperation extends RemoteOperation {
} else if (downloadType == DownloadType.EXPORT) {
new FileExportUtils().exportFile(file.getFileName(),
file.getMimeType(),
context.getContentResolver(),
context.get().getContentResolver(),
null,
tmpFile);
if (!tmpFile.delete()) {