Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6d8ec2f4 authored by Stefan Niedermann's avatar Stefan Niedermann
Browse files

feat: Implement java.lang.AutoClosable

parent a5de5ab7
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -219,7 +219,7 @@ public class MyActivity extends AppCompatActivity {
        super.onStop();
        // Close Service Connection to Nextcloud Files App and
        // disconnect API from Context (prevent Memory Leak)
        mNextcloudAPI.stop();
        mNextcloudAPI.close();
    }

    private void downloadFile() {
+11 −2
Original line number Diff line number Diff line
@@ -128,13 +128,22 @@ public class AidlNetworkRequest extends NetworkRequest {
        connectApiWithBackoff();
    }

    public void stop() {
        super.stop();
    @Override
    public void close() {
        super.close();

        unbindService();
        mContext = null;
    }

    /**
     * @deprecated Use {@link #close()}
     */
    @Deprecated(forRemoval = true)
    public void stop() {
        close();
    }

    private void unbindService() {
        // Unbind from the service
        if (mBound.get()) {
+12 −3
Original line number Diff line number Diff line
@@ -12,7 +12,7 @@ import com.nextcloud.android.sso.model.SingleSignOnAccount;

import java.io.InputStream;

public abstract class NetworkRequest {
public abstract class NetworkRequest implements AutoCloseable {

    private static final String TAG = NetworkRequest.class.getCanonicalName();

@@ -43,16 +43,25 @@ public abstract class NetworkRequest {
            connect(mAccount.type);
        }, () -> {
            Log.e(TAG, "Unable to recover API");
            stop();
            close();
        }).start();
    }

    protected void stop() {
    @Override
    public void close() {
        mCallback = null;
        mAccount = null;
        mDestroyed = true;
    }

    /**
     * @deprecated Use {@link #close()}
     */
    @Deprecated(forRemoval = true)
    protected void stop() {
        close();
    }

    protected String getAccountName() {
        return mAccount.name;
    }
+12 −3
Original line number Diff line number Diff line
@@ -44,7 +44,7 @@ import java.lang.reflect.Type;
import io.reactivex.Observable;
import io.reactivex.annotations.NonNull;

public class NextcloudAPI {
public class NextcloudAPI implements AutoCloseable {

    private static final String TAG = NextcloudAPI.class.getCanonicalName();

@@ -101,10 +101,19 @@ public class NextcloudAPI {
     *
     * <p>A good place <em>depending on your actual implementation</em> might be {@link Activity#onStop()}.</p>
     */
    @Override
    @SuppressWarnings("JavadocReference")
    public void stop() {
    public void close() {
        gson = null;
        networkRequest.stop();
        networkRequest.close();
    }

    /**
     * @deprecated Use {@link #close()}
     */
    @Deprecated(forRemoval = true)
    public void stop() {
        close();
    }

    public <T> Observable<ParsedResponse<T>> performRequestObservableV2(final Type type, final NextcloudRequest request) {
+1 −1
Original line number Diff line number Diff line
@@ -124,7 +124,7 @@ public class MainActivity extends AppCompatActivity {
                     *
                     * @see https://github.com/nextcloud/Android-SingleSignOn/issues/120#issuecomment-540069990
                     */
                    nextcloudAPI.stop();
                    nextcloudAPI.close();
                });
            });
        } catch (AccountImportCancelledException e) {