Refactor: Fix some lint errors

- Use weak reference to LocalFileTransferActivity in async tasks to prevent leaks
- Add 'default' case in switch
This commit is contained in:
Aditya-Sood 2019-07-20 13:56:13 +05:30
parent fb4c6f80c7
commit f8eda73ef9
5 changed files with 21 additions and 9 deletions

View File

@ -58,6 +58,8 @@ public class FileListAdapter extends RecyclerView.Adapter<FileListAdapter.FileVi
case ERROR:
holder.statusImage.setImageResource(R.drawable.ic_baseline_error_24px);
break;
default:
break;
}
holder.statusImage.setVisibility(View.VISIBLE);

View File

@ -5,6 +5,7 @@ import android.net.wifi.p2p.WifiP2pInfo;
import android.os.AsyncTask;
import android.util.Log;
import java.lang.ref.WeakReference;
import org.kiwix.kiwixmobile.BuildConfig;
import java.io.InputStream;
@ -39,11 +40,11 @@ class PeerGroupHandshakeAsyncTask extends AsyncTask<Void, Void, InetAddress> {
private static final String TAG = "PeerGrpHndshakeAsyncTsk";
private final String HANDSHAKE_MESSAGE = "Request Kiwix File Sharing";
private LocalFileTransferActivity localFileTransferActivity;
private WeakReference<LocalFileTransferActivity> weakReferenceToActivity;
private WifiP2pInfo groupInfo;
public PeerGroupHandshakeAsyncTask(LocalFileTransferActivity localFileTransferActivity, WifiP2pInfo groupInfo) {
this.localFileTransferActivity = localFileTransferActivity;
this.weakReferenceToActivity = new WeakReference<>(localFileTransferActivity);
this.groupInfo = groupInfo;
}
@ -103,6 +104,8 @@ class PeerGroupHandshakeAsyncTask extends AsyncTask<Void, Void, InetAddress> {
}
private void exchangeFileTransferMetadata(OutputStream outputStream, InputStream inputStream) {
final LocalFileTransferActivity localFileTransferActivity = weakReferenceToActivity.get();
if (localFileTransferActivity.isFileSender()) {
try (ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream)) {
// Send total number of files which will be transferred
@ -149,6 +152,7 @@ class PeerGroupHandshakeAsyncTask extends AsyncTask<Void, Void, InetAddress> {
@Override
protected void onPostExecute(InetAddress inetAddress) {
final LocalFileTransferActivity localFileTransferActivity = weakReferenceToActivity.get();
localFileTransferActivity.setClientAddress(inetAddress);
}
}

View File

@ -4,6 +4,7 @@ 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;
@ -34,11 +35,11 @@ class ReceiverDeviceAsyncTask extends AsyncTask<Void, Integer, Boolean> {
private static final String TAG = "ReceiverDeviceAsyncTask";
private LocalFileTransferActivity localFileTransferActivity;
private WeakReference<LocalFileTransferActivity> weakReferenceToActivity;
private int fileItemIndex;
public ReceiverDeviceAsyncTask(LocalFileTransferActivity localFileTransferActivity) {
this.localFileTransferActivity = localFileTransferActivity;
this.weakReferenceToActivity = new WeakReference<>(localFileTransferActivity);
}
@Override
@ -46,6 +47,7 @@ class ReceiverDeviceAsyncTask extends AsyncTask<Void, Integer, Boolean> {
try (ServerSocket serverSocket = new ServerSocket(FILE_TRANSFER_PORT)) {
if (BuildConfig.DEBUG) Log.d(TAG, "Server: Socket opened at " + FILE_TRANSFER_PORT);
final LocalFileTransferActivity localFileTransferActivity = weakReferenceToActivity.get();
final String KIWIX_ROOT = localFileTransferActivity.getZimStorageRootPath();
int totalFileCount = localFileTransferActivity.getTotalFilesForTransfer();
@ -90,6 +92,7 @@ class ReceiverDeviceAsyncTask extends AsyncTask<Void, Integer, Boolean> {
@Override
protected void onProgressUpdate(Integer... values) {
int fileStatus = values[0];
final LocalFileTransferActivity localFileTransferActivity = weakReferenceToActivity.get();
localFileTransferActivity.changeStatus(fileItemIndex, fileStatus);
}
@ -101,6 +104,7 @@ class ReceiverDeviceAsyncTask extends AsyncTask<Void, Integer, Boolean> {
protected void onPostExecute(Boolean allFilesReceived) {
if (BuildConfig.DEBUG) Log.d(TAG, "File transfer complete");
final LocalFileTransferActivity localFileTransferActivity = weakReferenceToActivity.get();
if (allFilesReceived) {
showToast(localFileTransferActivity, R.string.file_transfer_complete,
Toast.LENGTH_LONG);

View File

@ -1,12 +1,12 @@
package org.kiwix.kiwixmobile.zim_manager.local_file_transfer;
import android.app.Activity;
import android.content.ContentResolver;
import android.net.Uri;
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;
@ -38,22 +38,24 @@ class SenderDeviceAsyncTask extends AsyncTask<Uri, Void, Boolean> {
private static final String TAG = "SenderDeviceAsyncTask";
private LocalFileTransferActivity localFileTransferActivity;
private WeakReference<LocalFileTransferActivity> weakReferenceToActivity;
private int fileItemIndex;
public SenderDeviceAsyncTask(LocalFileTransferActivity localFileTransferActivity, int fileItemIndex) {
this.localFileTransferActivity = localFileTransferActivity;
this.weakReferenceToActivity = new WeakReference<>(localFileTransferActivity);
this.fileItemIndex = fileItemIndex;
}
@Override
protected void onPreExecute() {
final LocalFileTransferActivity localFileTransferActivity = weakReferenceToActivity.get();
localFileTransferActivity.changeStatus(fileItemIndex, SENDING);
}
@Override
protected Boolean doInBackground(Uri... fileUris) {
Uri fileUri = fileUris[0]; // Uri of file to be transferred
final LocalFileTransferActivity localFileTransferActivity = weakReferenceToActivity.get();
ContentResolver contentResolver = localFileTransferActivity.getContentResolver();
try (Socket socket = new Socket();
@ -88,6 +90,7 @@ class SenderDeviceAsyncTask extends AsyncTask<Uri, Void, Boolean> {
@Override
protected void onPostExecute(Boolean fileSendSuccessful) {
final LocalFileTransferActivity localFileTransferActivity = weakReferenceToActivity.get();
localFileTransferActivity.incrementTotalFilesSent();
if (fileSendSuccessful) { // Whether this task was successful in sending the file

View File

@ -22,8 +22,7 @@ import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.LocalFileTra
/**
* Helper class, part of the local file sharing module.
*
* Defines the Adapter for the list of wifi peer-device items displayed in {
* DeviceListFragment}
* Defines the Adapter for the list of wifi peer-device items displayed.
*/
public class WifiPeerListAdapter extends ArrayAdapter<WifiP2pDevice> {