2016-07-21 9 views
0

Я интегрировал Revmob Unity Plugin и отлично работает для почти 8 - 10 полноэкранного видео. После этого, не загружая статические или видео-интерстициальные объявления, он говорит: «Ваша RAM заполнена и ничего не может загрузить». Я попытался вызвать Release() как для статического, так и для видео, но ничего не работает.Revmob Unity Out Of Memory Проблема в Android

Когда я кэширую и воспроизвожу от 8 до 10 видео повторно, его работа прекрасна. После этого он полностью остановился. Я ждал почти 1 до 2 часов, ожидая, что она вновь, но :(

Является ли это проблемой в единстве revmob плагин ????

Рафаэль, я могу воспроизвести это каждый раз. Я попытался это в 3-х устройств. Я могу воспроизвести этот вопрос после просмотра 8 видео в Samsung Mega 5,8 с 1 Гб оперативной памяти.

в ASUS zenphone с 4 Гб оперативной памяти, вы можете увидеть использование оперативной памяти увеличивается после игры 20-30 видео.

BTW , так как у меня возникли сомнения в интеграции с другими сетями, я удалил все рекламные сети и протестировал этот один, чтобы воспроизвести эту проблему.

У меня есть несколько вопросов: Какой метод Release() используется в классе RevmobFullScreen. Я не могу найти вас, ребята, используя его в ваших примерах. Это настолько странно, что с помощью функции Release() после нажатия кнопки clickonad и closead, что позволяет мне играть от 5 до 6 видео и без релиза(), я могу воспроизводить от 8 до 10 видео. Я не вижу освобождения памяти с помощью Release(). Вызывается этот метод опционным или имеет какие-либо побочные эффекты?

Кроме того, кеширование видео неоднократно после закрытия или нажатия на объявление вызывает утечку памяти ????? cos, это единственное, что я делаю с Revmob ничего больше

Для вашей справки я прилагаю свой код.

using UnityEngine; 
using System.Collections; 
using System; 
using System.Collections.Generic; 

public class RevmobController : BaseController, IRevMobListener { 

    private Dictionary<string, string> REVMOB_APP_IDS; 

    private static RevMob revmob; 
    private static RevMobBanner banner; 
    private static RevMobFullscreen fullscreenStatic; 
    private static RevMobFullscreen fullscreenVideo; 

    public bool bannerAdsOnBootup; 
    public bool interstitialAdsOnBootup; 
    private bool fullscreenStaticAvailable; 
    private bool fullscreenVideoAvailable; 

    public bool createBanner; 

    private static RevmobController adsController; 

    public string androidMediaId; 
    public string iosMediaId; 

    private enum TYPE_OF_AD {STATIC, VIDEO}; 
    private TYPE_OF_AD typeOfAd; 
    public static RevmobController SharedInstance() { 
     return adsController; 
    } 


    void Awake() {  
     adsController = this; 
     DontDestroyOnLoad(adsController); 
     REVMOB_APP_IDS = new Dictionary<string, string>() { 
      { "Android", androidMediaId}, 
      { "IOS", iosMediaId } 
     }; 
     revmob = RevMob.Start (REVMOB_APP_IDS, gameObject.name); 
    } 

    // Use this for initialization 
    void Start() {  

    } 

    public bool ShowFullscreenStatic(string location) 
    { 
     if(!fullscreenStaticAvailable) { 
      return false; 
     } 
     this.location = location; 
     StartCoroutine(LoadInterstitial(location)); 
     return true; 
    } 

    IEnumerator LoadInterstitial(string location) { 
     yield return null; 
     fullscreenStatic.Show(); 
    } 

    public bool ShowFullscreenVideo(string location) 
    { 
     if(!fullscreenVideoAvailable) { 
      return false; 
     } 
     this.location = location; 
     StartCoroutine(LoadVideoInterstitial(location)); 
     return true; 
    } 

    IEnumerator LoadVideoInterstitial(string location) { 
     yield return null; 
     fullscreenVideo.ShowVideo(); 
    } 

    public void CacheStaticInterstitial(string location) { 
     if(!AdsService.SharedInstance().IsInternetConnected()) { 
      return; 
     } 
     DestroyStatic(); 
     StartCoroutine(CacheAfterEndofFrame(location, TYPE_OF_AD.STATIC)); 
    } 
    public void CacheVideoInterstitial() { 
     if(!AdsService.SharedInstance().IsInternetConnected()) { 
      return; 
     } 
     DestroyVideo(); 
     StartCoroutine(CacheAfterEndofFrame(location, TYPE_OF_AD.VIDEO)); 
    } 

    IEnumerator CacheAfterEndofFrame(string location, TYPE_OF_AD typeOfAd) { 
     yield return null; 
     this.typeOfAd = typeOfAd; 
     if(typeOfAd == TYPE_OF_AD.STATIC) { 
      fullscreenStatic = revmob.CreateFullscreen(location); 
     } else {       
      fullscreenVideo = revmob.CreateVideo(location); 
     } 
    } 

    public void SessionIsStarted() 
    { 
     Debug.Log("Session started."); 
     if(createBanner) { 
      banner= revmob.CreateBanner(); 
     } 

     CacheStaticInterstitial("Bootup"); 
     CacheVideoInterstitial(); 

     if(bannerAdsOnBootup && banner != null) { 
      if (PlayerPrefs.GetInt("removeads",0) == 0) { 
       banner.Show(); 
      } 
     } 
    }  

    public void SessionNotStarted (string revMobAdType) 
    { 
     Debug.Log("Session not started."); 
    } 
    public void AdDidReceive (string revMobAdType) 
    { 
     Debug.Log("Ad did receive."); 
     if(typeOfAd == TYPE_OF_AD.STATIC) { 
      fullscreenStaticAvailable = true; 
     } else if(typeOfAd == TYPE_OF_AD.VIDEO) { 
      fullscreenVideoAvailable = true; 
     } 

     if(interstitialAdsOnBootup) { 
      ShowFullscreenStatic("Bootup"); 
      interstitialAdsOnBootup = false; 
      fullscreenStaticAvailable = false; 
     } 
    } 
    public void AdDidFail (string revMobAdType) 
    {  
     Debug.Log("Ad did fail."); 
    } 
    public void AdDisplayed (string revMobAdType) 
    { 
     Debug.Log("Ad displayed."); 
     AdsService.SharedInstance().PauseAudio(); 
    } 
    public void UserClickedInTheAd (string revMobAdType) 
    { 
     Debug.Log("Ad clicked."); 
     if(typeOfAd == TYPE_OF_AD.STATIC) { 
      fullscreenStaticAvailable = false; 
      DestroyStatic(); 
      //CacheStaticInterstitial(); 
     } else if(typeOfAd == TYPE_OF_AD.VIDEO) { 
      fullscreenVideoAvailable = false; 
      DestroyVideo(); 
      //CacheVideoInterstitial(); 
     } 
    } 
    public void UserClosedTheAd (string revMobAdType) 
    { 
     Debug.Log("Ad closed."); 
     AdsService.SharedInstance().ResumeAudio(); 
     CallOnAdComplete(this.location); 
     if(typeOfAd == TYPE_OF_AD.STATIC) { 
      fullscreenStaticAvailable = false; 
      DestroyStatic(); 
      //CacheStaticInterstitial(); 
     } else if(typeOfAd == TYPE_OF_AD.VIDEO) { 
      fullscreenVideoAvailable = false; 
      DestroyVideo(); 
      //CacheVideoInterstitial(); 
     } 
    } 

    void DestroyStatic() { 
     if(fullscreenStatic != null) { 
      //fullscreenStatic.Hide(); 
      //fullscreenStatic.Release(); 
      //fullscreenStatic = null; 
     } 
    } 

    void DestroyVideo() { 
     if(fullscreenVideo != null) { 
      //fullscreenVideo.Hide(); 
      //fullscreenVideo.Release(); 
      //fullscreenVideo = null; 
     } 
    } 

    public void VideoStarted() { 
    } 
    public void VideoFinished() {  
     //fullscreenVideoAvailable = false; 
     /*fullscreenVideo.Release(); 
     fullscreenVideo = revmob.CreateVideo();*/ 
    } 
    public void VideoLoaded() { 
     fullscreenVideoAvailable = true; 

    } 
    public void VideoNotCompletelyLoaded() { 
    } 
    public void RewardedVideoLoaded() { 
    } 
    public void RewardedVideoNotCompletelyLoaded() { 
    } 
    public void RewardedVideoStarted() { 
    } 
    public void RewardedVideoFinished() { 
    } 
    public void RewardedVideoCompleted() { 
    } 
    public void RewardedPreRollDisplayed() { 
    } 

    void OnDestroy() { 
     if(banner != null) { 
      //banner.Release(); 
     } 
     if(fullscreenVideo != null) { 
      //fullscreenVideo.Release(); 
     } 
     if(fullscreenStatic != null) { 
      //fullscreenStatic.Release(); 
     } 
     adsController = null; 
    } 
} 

ответ

0

Я не могу воспроизвести это поведение на моей стороне, и это первая жалоба мы получаем, так что это, кажется, не быть проблемой Revmob Plugin.

В любом случае мы собираемся выпустить версию 9.2.0, которая включает в себя улучшения производительности, среди прочего.

Если проблема не решена, или вы столкнулись с другими проблемами, вы также можете использовать our forum или напишите нам по адресу [email protected]

С уважением,

+0

Рафаэль, не могли бы вы еще раз проверить мой вопрос ?. Я отредактировал его и опубликовал весь мой код. Не могли бы вы проверить и сообщить мне, есть ли проблема в коде ??? – Kenshin

+0

и когда выйдет 9.2.0? – Kenshin

+0

любой ответ для этого ???? – Kenshin

 Смежные вопросы

  • Нет связанных вопросов^_^