Skip to content

Commit 9124771

Browse files
authored
Fix memory leak, switch to auto managed clients where possible (#334)
1 parent 2ae7c44 commit 9124771

File tree

4 files changed

+17
-23
lines changed

4 files changed

+17
-23
lines changed

auth/src/main/java/com/firebase/ui/auth/ui/account_link/SaveCredentialsActivity.java

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -79,26 +79,10 @@ protected void onCreate(Bundle savedInstanceState) {
7979
.addConnectionCallbacks(this)
8080
.addOnConnectionFailedListener(this)
8181
.addApi(Auth.CREDENTIALS_API)
82+
.enableAutoManage(this, this)
8283
.build();
83-
mCredentialsApiClient.connect();
8484
}
8585

86-
87-
@Override
88-
protected void onStart() {
89-
super.onStart();
90-
mCredentialsApiClient.connect();
91-
}
92-
93-
@Override
94-
protected void onStop() {
95-
super.onStop();
96-
if (mCredentialsApiClient != null) {
97-
mCredentialsApiClient.disconnect();
98-
}
99-
}
100-
101-
10286
@Override
10387
public void onConnected(@Nullable Bundle bundle) {
10488
if (mEmail == null) {

auth/src/main/java/com/firebase/ui/auth/ui/email/SignInActivity.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ public void onFailure(@NonNull Exception e) {
126126
TextInputLayout passwordInput =
127127
(TextInputLayout) findViewById(R.id.password_layout);
128128
passwordInput.setError(getString(R.string.login_error));
129+
mActivityHelper.dismissDialog();
129130
}
130131
});
131132
}

auth/src/main/java/com/firebase/ui/auth/util/FirebaseAuthWrapper.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import android.support.annotation.Nullable;
2222
import android.support.annotation.WorkerThread;
2323

24+
import android.support.v4.app.FragmentActivity;
2425
import com.google.firebase.auth.AuthCredential;
2526
import com.google.firebase.auth.FirebaseUser;
2627

@@ -68,7 +69,7 @@ FirebaseUser linkWithCredential(
6869

6970
boolean isPlayServicesAvailable(Context context);
7071

71-
PendingIntent getEmailHintIntent(Context context);
72+
PendingIntent getEmailHintIntent(FragmentActivity context);
7273

7374
void setTimeOut(long timeoutMs);
7475

auth/src/main/java/com/firebase/ui/auth/util/FirebaseAuthWrapperImpl.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,14 @@
1414

1515
package com.firebase.ui.auth.util;
1616

17+
import android.app.Fragment;
1718
import android.app.PendingIntent;
1819
import android.content.Context;
1920
import android.os.Bundle;
2021
import android.support.annotation.NonNull;
2122
import android.support.annotation.Nullable;
2223
import android.support.annotation.WorkerThread;
24+
import android.support.v4.app.FragmentActivity;
2325
import android.util.Log;
2426

2527
import com.firebase.ui.auth.BuildConfig;
@@ -29,6 +31,7 @@
2931
import com.google.android.gms.common.ConnectionResult;
3032
import com.google.android.gms.common.GoogleApiAvailability;
3133
import com.google.android.gms.common.api.GoogleApiClient;
34+
import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener;
3235
import com.google.android.gms.tasks.Task;
3336
import com.google.android.gms.tasks.Tasks;
3437
import com.google.firebase.auth.AuthCredential;
@@ -153,18 +156,23 @@ protected boolean isPlayServicesAvailable(
153156
}
154157

155158
@Override
156-
public PendingIntent getEmailHintIntent(Context context) {
157-
if (!isPlayServicesAvailable(context, GoogleApiAvailability.getInstance())) {
159+
public PendingIntent getEmailHintIntent(FragmentActivity fragmentActivity) {
160+
if (!isPlayServicesAvailable(fragmentActivity, GoogleApiAvailability.getInstance())) {
158161
return null;
159162
}
160163

161-
GoogleApiClient client = new GoogleApiClient.Builder(context)
164+
GoogleApiClient client = new GoogleApiClient.Builder(fragmentActivity)
162165
.addConnectionCallbacks(this)
163166
.addApi(Auth.CREDENTIALS_API)
167+
.enableAutoManage(fragmentActivity, new OnConnectionFailedListener() {
168+
@Override
169+
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
170+
Log.e(TAG,
171+
"Client connection failed: " + connectionResult.getErrorMessage());
172+
}
173+
})
164174
.build();
165175

166-
client.connect();
167-
168176
HintRequest hintRequest = new HintRequest.Builder()
169177
.setHintPickerConfig(new CredentialPickerConfig.Builder()
170178
.setShowCancelButton(true)

0 commit comments

Comments
 (0)