[英]Google Play Services Leak
我剛開始使用Google Play游戲服務,昨天在檢查logcat時我無法注意到這個錯誤:
E / DataBuffer(3183):檢測到DataBuffer對象內部數據泄漏! 確保在完成所有DataBuffer擴展對象后顯式調用close()。 (內部對象: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(),它們就會消失。 瞧!
需要釋放任何數據緩沖區的子類。 所以在完成該對象后,將其釋放。
Data Buffer對象包含一個release()
方法,因此在完成該對象后,只需使用databuffer.release();
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.