簡體   English   中英

Google Play服務泄漏

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM