Intereting Posts
Как открыть камеру непосредственно в режиме панорамы / фотосферы? Что проще для кода: Android App vs iOS App? Раздел алфавитов Android Listview, как список контактов appviewview Тема Google Maps для Android Настройка имени приложения в ярлыке приложения не работает Java.lang.RuntimeException: не удается создать обработчик внутри потока, который не вызвал Looper.prepare () Ошибка при запуске проекта календаря IntelliJ Idea auto создает новый метод Предназначение для получения нескольких изображений Правильный способ создания диалогового окна настраиваемого материала с помощью приложения AppCompat 23+ Как я могу отклонить навигационный ящик, чтобы использовать кнопку Back-home-icon? DefaultHttpClient или HttpURLConnection на Android Ошибка раздувания фрагмента в диалоге второй раз Как экспортировать активность, чтобы другие приложения могли ее назвать? Сообщение об ошибке: для Android SDK требуется Android Developer Toolkit версии 22.6.1 или выше

Утечка служб Google Play

Я начал использовать Google Play Game Services некоторое время назад, а вчера, проверяя logcat, я не смог заметить эту ошибку:

E / DataBuffer (3183): обнаружена утечка внутренних данных в обнаруженном объекте DataBuffer! Обязательно явно вызывайте close () на всех объектах, расширяющих DataBuffer, когда вы закончите с ними. (Внутренний объект: com.google.android.gms.common.data.DataHolder@40555410)

Это происходит несколько раз подряд. Я не совсем уверен, почему это происходит. Это не приводит к сбою моего приложения и не приводит к прекращению работы google-достижений / лидеров.

Все, что я знаю, это то, что это связано с функциями «unlockAchievementImmediate» и «submitScoreImmediate».

Кто-нибудь сталкивался с этой проблемой раньше или имеет какие-либо предложения?


Изменить: в моем приложении я использую только «unlockAchievementImmediate» и «submitScoreImmediate». Эти функции не возвращают никаких буферов, которые требуют закрытия.

Solutions Collecting From Web of "Утечка служб Google Play"

Эти элементы расширяют DataBuffer: AchievementBuffer, AppStateBuffer, FilteredDataBuffer, GameBuffer, InvitationBuffer, LeaderboardBuffer, LeaderboardScoreBuffer, MetadataBuffer, MomentBuffer, UserBuffer, PersonBuffer, PlayerBuffer, TurnBasedMatchBuffer.

Они обычно встречаются у ваших слушателей этих предметов. Например:

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(); } 

Ошибка не сообщается только после выхода из приложения и повторного ввода. Если я вызову свои матчи 3 раза и выйду из приложения, не вызвав buff.close (), я могу ожидать увидеть предупреждение 3 раза, снова открыв его. Добавьте в buff.close (), и они исчезнут. Вуаля!

Любой субкласс буфера данных должен быть выпущен. Поэтому после того, как вы закончите с этим выпуском объекта.

Объект буфера данных содержит метод release() поэтому после того, как вы закончите с этим объектом, просто отпустите его, используя databuffer.release(); ,