Se pierde memoria con GoogleApiClient detectado por Android Studio

He creado un nuevo proyecto con una clase y con el siguiente código tomado de este ejemplo: https://developers.google.com/app-indexing/android/publish#add-app-indexing-api-calls

Cuando roto el dispositivo varias veces y luego haga clic en Dump Java Heap en Android Studio y, a continuación, haga clic en Analyze. Voy a obtener un resultado que muestra que mi MainActivity se ha filtrado.

La razón por la que he creado este proyecto de ejemplo, es porque tengo una aplicación existente que tiene un problema de pérdida de memoria (StrictMode y Android Studio lo dice), y mi conclusión es que es mi código AppIndex que están causando el problema.

¿Es un error en Android Studio o es una pérdida de memoria real?

public class MainActivity extends AppCompatActivity { private GoogleApiClient mClient; private Uri mUrl; private String mTitle; private String mDescription; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mClient = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build(); mUrl = Uri.parse("http://examplepetstore.com/dogs/standard-poodle"); mTitle = "Standard Poodle"; mDescription = "The Standard Poodle stands at least 18 inches at the withers"; } public Action getAction() { Thing object = new Thing.Builder() .setName(mTitle) .setDescription(mDescription) .setUrl(mUrl) .build(); return new Action.Builder(Action.TYPE_VIEW) .setObject(object) .setActionStatus(Action.STATUS_TYPE_COMPLETED) .build(); } @Override public void onStart() { super.onStart(); mClient.connect(); AppIndex.AppIndexApi.start(mClient, getAction()); } @Override public void onStop() { AppIndex.AppIndexApi.end(mClient, getAction()); mClient.disconnect(); super.onStop(); } 

}

Parece que GoogleApiClient.Builder(this) está causando la fuga, porque la actividad actual está siendo mantenida por el cliente de la API. mClient.disconnect() no lo va a liberar. Lo he resuelto para mí mismo reemplazando "this" por getApplicationContext() . El contexto de la aplicación vive mientras el proceso vive.

 mClient = new GoogleApiClient.Builder(getApplicationContext()).addApi(AppIndex.API).build(); 
  • App Invites for Android: Cómo configurar el contenido de los mensajes recibidos
  • Cómo obtener refreshToken al usar GoogleAuthUtil
  • La compilación de Gradle falla al buscar los servicios de Google Play en Android Studio - ¿es correcto mi SDK?
  • Las siguientes clases no se pudieron instanciar: - com.google.android.gms.plus.PlusOneButton
  • El enlace "Instalar" de AppInvites no abre la aplicación
  • GoogleApiClient tiene un Plus.API opcional y no está conectado a Plus con el nuevo signo de Google introducido en Play Services 8.3
  • Problema con Google Fit API en Android Wear
  • ¿Funcionará GCM Network Manager en dispositivos que no sean de Play?
  • ¿Es necesaria la clave API en la certificación de SafetyNet?
  • Encontrado com.google.android.gms: play-services-gcm: 8.3.0, pero se necesita la versión 8.1.0
  • ¿Cuándo debo usar el permiso ACCESS_COARSE_LOCATION?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.