在unity 5中,每次插页广告显示时,内存都会增加
本文关键字:显示 内存 增加 unity | 更新日期: 2023-09-27 18:11:29
我使用google admob在unity 5中显示插页式广告。我从github下载了googleleads移动unity包和googlemobileadssdkios。我在Xcode中创建并运行游戏,它会显示条幅广告和插页式广告。我使用调试导航器查看每次加载和关闭广告时的内存消耗情况。我注意到,每次加载插页广告时,内存消耗都在增加。这意味着在关闭插页广告时内存不会被释放。
我没有改变从github下载的源代码。如果在这种模式下内存增加,则应用程序将由于内存不足而终止。那么,如何在插页广告关闭后释放内存呢?
问题可能在于您如何使用InterstitialAd
API。如果不正确使用,您将获得内存泄漏。
如果你在一个函数中创建新的interstitial实例,并且实例变量被声明为局部变量,你必须在函数结束之前或者在你失去对interstitial类的引用之前调用interstitial类的Destroy
函数。
void showAdFunction()
{
InterstitialAd interstitial = new InterstitialAd(adUnitId);
AdRequest request = new AdRequest.Builder().Build();
//....
interstitial.LoadAd(request);
interstitial.Destroy(); //Must do this before losing the reference
}
现在,如果你有InterstitialAd
实例作为一个全局变量,并且它里面的脚本正在被另一个脚本销毁,你必须在OnDestroy
函数中销毁InterstitialAd
实例。
private InterstitialAd interstitial;
void showAdFunction()
{
interstitial = new InterstitialAd(adUnitId);
AdRequest request = new AdRequest.Builder().Build();
//....
interstitial.LoadAd(request);
}
void OnDestroy()
{
interstitial.Destroy(); //Destroy
}