From e6fa97abba36b6d8d81b34d7484820fc066b015e Mon Sep 17 00:00:00 2001 From: Aditya-Sood Date: Sun, 4 Aug 2019 16:15:09 +0530 Subject: [PATCH] Increment: Add onFileTransferComplete() callback - Async-tasks are now free of a LocalFileTransferActivity instance --- .../LocalFileTransferActivity.java | 5 +++++ .../ReceiverDeviceAsyncTask.java | 8 ++------ .../SenderDeviceAsyncTask.java | 19 ++++++------------- .../WifiDirectManager.java | 6 ++++++ 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/local_file_transfer/LocalFileTransferActivity.java b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/local_file_transfer/LocalFileTransferActivity.java index 72439c5ad..45971a000 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/local_file_transfer/LocalFileTransferActivity.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/local_file_transfer/LocalFileTransferActivity.java @@ -246,6 +246,11 @@ public class LocalFileTransferActivity extends AppCompatActivity implements } } + @Override + public void onFileTransferComplete() { + finish(); + } + /* Helper methods used for checking permissions and states of services */ private boolean checkCoarseLocationAccessPermission() { // Required by Android to detect wifi-p2p peers if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) diff --git a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/local_file_transfer/ReceiverDeviceAsyncTask.java b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/local_file_transfer/ReceiverDeviceAsyncTask.java index a873740a1..c7eb54da9 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/local_file_transfer/ReceiverDeviceAsyncTask.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/local_file_transfer/ReceiverDeviceAsyncTask.java @@ -4,7 +4,6 @@ import android.os.AsyncTask; import android.util.Log; import android.widget.Toast; -import java.lang.ref.WeakReference; import org.kiwix.kiwixmobile.BuildConfig; import org.kiwix.kiwixmobile.R; @@ -35,13 +34,10 @@ class ReceiverDeviceAsyncTask extends AsyncTask { private static final String TAG = "ReceiverDeviceAsyncTask"; - private WeakReference weakReferenceToActivity; private WifiDirectManager wifiDirectManager; - private int fileItemIndex; private String incomingFileName; public ReceiverDeviceAsyncTask(WifiDirectManager wifiDirectManager, LocalFileTransferActivity localFileTransferActivity) { - this.weakReferenceToActivity = new WeakReference<>(localFileTransferActivity); this.wifiDirectManager = wifiDirectManager; } @@ -53,6 +49,7 @@ class ReceiverDeviceAsyncTask extends AsyncTask { final String KIWIX_ROOT = wifiDirectManager.getZimStorageRootPath(); int totalFileCount = wifiDirectManager.getTotalFilesForTransfer(); boolean result = true; + int fileItemIndex; if (BuildConfig.DEBUG) Log.d(TAG, "Expecting "+totalFileCount+" files"); @@ -115,13 +112,12 @@ class ReceiverDeviceAsyncTask extends AsyncTask { protected void onPostExecute(Boolean allFilesReceived) { if (BuildConfig.DEBUG) Log.d(TAG, "File transfer complete"); - final LocalFileTransferActivity localFileTransferActivity = weakReferenceToActivity.get(); if (allFilesReceived) { wifiDirectManager.displayToast(R.string.file_transfer_complete, Toast.LENGTH_LONG); } else { wifiDirectManager.displayToast(R.string.error_during_transfer, Toast.LENGTH_LONG); } - localFileTransferActivity.finish(); + wifiDirectManager.onFileTransferAsyncTaskComplete(); } } diff --git a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/local_file_transfer/SenderDeviceAsyncTask.java b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/local_file_transfer/SenderDeviceAsyncTask.java index c1e6be66f..ea14d39f6 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/local_file_transfer/SenderDeviceAsyncTask.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/local_file_transfer/SenderDeviceAsyncTask.java @@ -6,7 +6,6 @@ import android.os.AsyncTask; import android.util.Log; import android.widget.Toast; -import java.lang.ref.WeakReference; import org.kiwix.kiwixmobile.BuildConfig; import org.kiwix.kiwixmobile.R; @@ -20,7 +19,6 @@ import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.FileItem.Fil import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.WifiDirectManager.FILE_TRANSFER_PORT; import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.WifiDirectManager.copyToOutputStream; import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.WifiDirectManager.getFileName; -import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.LocalFileTransferActivity.showToast; /** * Helper class for the local file sharing module. @@ -38,13 +36,12 @@ class SenderDeviceAsyncTask extends AsyncTask { private static final String TAG = "SenderDeviceAsyncTask"; - private WeakReference weakReferenceToActivity; private WifiDirectManager wifiDirectManager; - private int fileItemIndex = -1; + private ContentResolver contentResolver; public SenderDeviceAsyncTask(WifiDirectManager wifiDirectManager, LocalFileTransferActivity localFileTransferActivity) { - this.weakReferenceToActivity = new WeakReference<>(localFileTransferActivity); this.wifiDirectManager = wifiDirectManager; + this.contentResolver = localFileTransferActivity.getContentResolver(); } @Override @@ -59,10 +56,8 @@ class SenderDeviceAsyncTask extends AsyncTask { for(int i = 0; i < 2000000000; i++); - final LocalFileTransferActivity localFileTransferActivity = weakReferenceToActivity.get(); - ContentResolver contentResolver = localFileTransferActivity.getContentResolver(); - - Boolean result = true; + boolean result = true; + int fileItemIndex = -1; for(Uri fileUri : fileUris) { // Uri of file to be transferred fileItemIndex++; @@ -109,7 +104,7 @@ class SenderDeviceAsyncTask extends AsyncTask { wifiDirectManager.changeStatus(fileIndex, fileStatus); if(fileStatus == ERROR) { - wifiDirectManager.displayToast(R.string.error_transferring, getFileName(wifiDirectManager.getFileUriArrayList().get(fileItemIndex)), Toast.LENGTH_SHORT); + wifiDirectManager.displayToast(R.string.error_transferring, getFileName(wifiDirectManager.getFileUriArrayList().get(fileIndex)), Toast.LENGTH_SHORT); } } @@ -119,11 +114,9 @@ class SenderDeviceAsyncTask extends AsyncTask { @Override protected void onPostExecute(Boolean fileSendSuccessful) { - final LocalFileTransferActivity localFileTransferActivity = weakReferenceToActivity.get(); - if (wifiDirectManager.allFilesSent()) { wifiDirectManager.displayToast(R.string.file_transfer_complete, Toast.LENGTH_SHORT); - localFileTransferActivity.finish(); } + wifiDirectManager.onFileTransferAsyncTaskComplete(); } } diff --git a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/local_file_transfer/WifiDirectManager.java b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/local_file_transfer/WifiDirectManager.java index 3b96ab24f..3a67ec4cd 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/local_file_transfer/WifiDirectManager.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/local_file_transfer/WifiDirectManager.java @@ -446,6 +446,10 @@ public class WifiDirectManager implements WifiP2pManager.ChannelListener, WifiP2 showToast(activity, stringResourceId, duration); } + public void onFileTransferAsyncTaskComplete() { + ((Callbacks) activity).onFileTransferComplete(); + } + public interface Callbacks { void onUserDeviceDetailsAvailable(@Nullable WifiP2pDevice userDevice); @@ -458,5 +462,7 @@ public class WifiDirectManager implements WifiP2pManager.ChannelListener, WifiP2 void onFilesForTransferAvailable(@NonNull ArrayList filesForTransfer); void onFileStatusChanged(int itemIndex); + + void onFileTransferComplete(); } }