Fuga de Google Play Services

Empecé a usar los servicios de juegos de Google Play hace un tiempo, y ayer, mientras que comprobar el logcat no podía ayudar a notar este error:

E / DataBuffer (3183): Fuga interna de datos dentro de un objeto DataBuffer detectado! Asegúrese de llamar explícitamente a close () en todos los objetos de extensión de DataBuffer cuando haya terminado con ellos. (objeto interno: com.google.android.gms.common.data.DataHolder@40555410)

Se produce varias veces en una fila. Im no exactamente seguro porqué surge. No hace que mi aplicación se bloquee ni hace que la funcionalidad de rendimiento / clasificación de google deje de funcionar.

Todo lo que sé es que está relacionado con las funciones "unlockAchievementImmediate" y "submitScoreImmediate".

¿Alguien ha encontrado este problema antes o tiene alguna sugerencia?


Editar: En mi aplicación solo utilizo "unlockAchievementImmediate" y "submitScoreImmediate". Estas funciones no devuelven ningún búfer que necesite cierre alguno.

Estos elementos se extienden DataBuffer: AchievementBuffer, AppStateBuffer, FilteredDataBuffer, GameBuffer, InvitationBuffer, LeaderboardBuffer, LeaderboardScoreBuffer, MetadataBuffer, MomentBuffer, ParticipantBuffer, PersonBuffer, PlayerBuffer, TurnBasedMatchBuffer.

Éstos se encuentran generalmente en sus oyentes de esos artículos particulares. Por ejemplo:

public void onTurnBasedMatchesLoaded(int statusCode, LoadMatchesResponse response) { TurnBasedMatchBuffer buff = response.getMyTurnMatches(); // do some stuff with buff buff.close() } public void onPlayersLoaded(int statusCode, PlayerBuffer buff) { Player p = buff.get(0); buff.close(); } 

El error no aparece hasta después de salir de mi aplicación y volver a ingresar. Si llamo a mis partidos 3 veces y salir de la aplicación sin llamar a buff.close (), puedo esperar para ver la advertencia 3 veces al abrir de nuevo. Añadir en el buff.close () y desaparecen. Voila!

Debe liberarse cualquier subclase de Data Buffer. Así que después de que haya terminado con ese objeto lo liberan.

El objeto Buffer de datos contiene un método release() así que después de que haya terminado con ese objeto simplemente lo libera usando databuffer.release(); .

  • Falta google-play-services_lib en <sdk> / extras / google / google_play_services / libproject /
  • Servicios de juegos de Google Play - Notificación personalizada / Bienvenido de nuevo
  • API de Android IsConnected devolviendo TRUE tras finalizar sesión
  • Cómo utilizar BaseGameActivity.getApiClient () en varias actividades?
  • No puede obtener la identificación de publicidad en android
  • ¿Cuáles son las dependencias de gradle necesarias para un backend de App Engine con Google Cloud Messaging?
  • LibGDX Servicios de juegos de Google Play - Android
  • Google Maps open-source-attribution es increíblemente grande y bloquea el hilo principal
  • Importar la biblioteca de Google Play Services en Android Studio
  • Cómo actualizar los servicios de Google Play en el emulador en Android Studio
  • Consola para desarrolladores de Google Play Store: no se puede administrar la lista de probadores para la prueba de beta cerrada
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.