其他分享
首页 > 其他分享> > android – Google Play服务泄漏

android – Google Play服务泄漏

作者:互联网

我刚开始使用Google Play游戏服务,昨天在检查logcat时我无法注意到这个错误:

E/DataBuffer(3183): Internal data leak within a DataBuffer object
detected! Be sure to explicitly call close() on all DataBuffer
extending objects when you are done with them. (internal object:
com.google.android.gms.common.data.DataHolder@40555410)

它连续发生几次.我不完全确定它为什么会出现.它不会使我的应用程序崩溃,也不会使谷歌成就/排行榜功能停止工作.

我所知道的是它与“unlockAchievementImmediate”和“submitScoreImmediate”功能有关.

有没有人遇到此问题或有任何建议?

编辑:在我的应用程序中,我只使用“unlockAchievementImmediate”和“submitScoreImmediate”.这些函数不返回任何需要关闭的缓冲区.

解决方法:

这些项扩展了DataBuffer:AchievementBuffer,AppStateBuffer,FilteredDataBuffer,GameBuffer,InvitationBuffer,LeaderboardBuffer,LeaderboardScoreBuffer,MetadataBuffer,MomentBuffer,ParticipantBuffer,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(),它们就会消失.瞧!

标签:android,google-play-services,memory-leaks,google-play-games
来源: https://codeday.me/bug/20191006/1860664.html