AdMob video-ad in GADBannerView is keep using CPU after a tab-change in UITabBarController





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







2















My setup:



There's a UITabBarController. In the first tab - there's a UINavigationController with a UITableViewController as a root viewcontroller.



In the table of UITableViewController, one of the cells contains a GADBannerView



In the cell with the bannerView, I'm loading the ad like this:



    var bannerView: GADBannerView = GADBannerView()
......
bannerView?.adUnitID = "<my adUnitId>"
bannerView?.adSize = kGADAdSizeMediumRectangle

let request = GADRequest()
request.contentURL = "<my site>"
bannerView?.load(request)


Problem:



I've noticed, that if the ad contains the video/animation - after switching between tabs - the CPU usage is still high and remains on 15-20% load forever (until you kill the app).



Actual ad looks like this:



enter image description here



A couple observations:




  • if instead of the video-ad - there's a static-image-ad - there's no issue. To me this issue looks like there's some "pause animation" which is not being called for the video-ads.

  • happens on both iOS11 and iOS12


  • func adViewDidReceiveAd(_ bannerView: GADBannerView) is not being called, i.e. the framework knows that the ad is no longer on the screen


This is how processes look like (after switching to another, ad-free tab):
enter image description here



Version of the AdMob:



'Firebase/AdMob', '~>5.15.0' (from cocoapods)



Any suggestions are very welcomed.










share|improve this question

























  • UITabBarController keeps the root UIViewControllers associated with its tabs alive in RAM after they have been instantiated even when you switch away to a different tab. If the ads in you UITableView are actually too RAM hungry to be kept alive, you're likely going to need to clean them up yourself when users switch away from the tab.

    – Dare
    Jan 3 at 16:31













  • Thanks for the input, @Dare . I did removeFromSuperview on the banner and nil the reference afterwards on viewWillDisappear - it's keep the CPU high (any better ways to clean up?) . Plus, what bugs me - the refresh stops working - so the framework is kind of know that ad shouldn't be on the screen..

    – Konstantin Loginov
    Jan 3 at 16:42











  • Are you calling destroy() on both banner and interstitial ads?

    – Dare
    Jan 3 at 16:48











  • @Dare I very well can be just stupid - but I don't see anything similar to destroy() (or synonyms) for GADBannerView class? (I've also set to nil both rootViewController and delegate for the banner - still same 16% CPU load)

    – Konstantin Loginov
    Jan 3 at 17:02




















2















My setup:



There's a UITabBarController. In the first tab - there's a UINavigationController with a UITableViewController as a root viewcontroller.



In the table of UITableViewController, one of the cells contains a GADBannerView



In the cell with the bannerView, I'm loading the ad like this:



    var bannerView: GADBannerView = GADBannerView()
......
bannerView?.adUnitID = "<my adUnitId>"
bannerView?.adSize = kGADAdSizeMediumRectangle

let request = GADRequest()
request.contentURL = "<my site>"
bannerView?.load(request)


Problem:



I've noticed, that if the ad contains the video/animation - after switching between tabs - the CPU usage is still high and remains on 15-20% load forever (until you kill the app).



Actual ad looks like this:



enter image description here



A couple observations:




  • if instead of the video-ad - there's a static-image-ad - there's no issue. To me this issue looks like there's some "pause animation" which is not being called for the video-ads.

  • happens on both iOS11 and iOS12


  • func adViewDidReceiveAd(_ bannerView: GADBannerView) is not being called, i.e. the framework knows that the ad is no longer on the screen


This is how processes look like (after switching to another, ad-free tab):
enter image description here



Version of the AdMob:



'Firebase/AdMob', '~>5.15.0' (from cocoapods)



Any suggestions are very welcomed.










share|improve this question

























  • UITabBarController keeps the root UIViewControllers associated with its tabs alive in RAM after they have been instantiated even when you switch away to a different tab. If the ads in you UITableView are actually too RAM hungry to be kept alive, you're likely going to need to clean them up yourself when users switch away from the tab.

    – Dare
    Jan 3 at 16:31













  • Thanks for the input, @Dare . I did removeFromSuperview on the banner and nil the reference afterwards on viewWillDisappear - it's keep the CPU high (any better ways to clean up?) . Plus, what bugs me - the refresh stops working - so the framework is kind of know that ad shouldn't be on the screen..

    – Konstantin Loginov
    Jan 3 at 16:42











  • Are you calling destroy() on both banner and interstitial ads?

    – Dare
    Jan 3 at 16:48











  • @Dare I very well can be just stupid - but I don't see anything similar to destroy() (or synonyms) for GADBannerView class? (I've also set to nil both rootViewController and delegate for the banner - still same 16% CPU load)

    – Konstantin Loginov
    Jan 3 at 17:02
















2












2








2


1






My setup:



There's a UITabBarController. In the first tab - there's a UINavigationController with a UITableViewController as a root viewcontroller.



In the table of UITableViewController, one of the cells contains a GADBannerView



In the cell with the bannerView, I'm loading the ad like this:



    var bannerView: GADBannerView = GADBannerView()
......
bannerView?.adUnitID = "<my adUnitId>"
bannerView?.adSize = kGADAdSizeMediumRectangle

let request = GADRequest()
request.contentURL = "<my site>"
bannerView?.load(request)


Problem:



I've noticed, that if the ad contains the video/animation - after switching between tabs - the CPU usage is still high and remains on 15-20% load forever (until you kill the app).



Actual ad looks like this:



enter image description here



A couple observations:




  • if instead of the video-ad - there's a static-image-ad - there's no issue. To me this issue looks like there's some "pause animation" which is not being called for the video-ads.

  • happens on both iOS11 and iOS12


  • func adViewDidReceiveAd(_ bannerView: GADBannerView) is not being called, i.e. the framework knows that the ad is no longer on the screen


This is how processes look like (after switching to another, ad-free tab):
enter image description here



Version of the AdMob:



'Firebase/AdMob', '~>5.15.0' (from cocoapods)



Any suggestions are very welcomed.










share|improve this question
















My setup:



There's a UITabBarController. In the first tab - there's a UINavigationController with a UITableViewController as a root viewcontroller.



In the table of UITableViewController, one of the cells contains a GADBannerView



In the cell with the bannerView, I'm loading the ad like this:



    var bannerView: GADBannerView = GADBannerView()
......
bannerView?.adUnitID = "<my adUnitId>"
bannerView?.adSize = kGADAdSizeMediumRectangle

let request = GADRequest()
request.contentURL = "<my site>"
bannerView?.load(request)


Problem:



I've noticed, that if the ad contains the video/animation - after switching between tabs - the CPU usage is still high and remains on 15-20% load forever (until you kill the app).



Actual ad looks like this:



enter image description here



A couple observations:




  • if instead of the video-ad - there's a static-image-ad - there's no issue. To me this issue looks like there's some "pause animation" which is not being called for the video-ads.

  • happens on both iOS11 and iOS12


  • func adViewDidReceiveAd(_ bannerView: GADBannerView) is not being called, i.e. the framework knows that the ad is no longer on the screen


This is how processes look like (after switching to another, ad-free tab):
enter image description here



Version of the AdMob:



'Firebase/AdMob', '~>5.15.0' (from cocoapods)



Any suggestions are very welcomed.







ios swift admob gadbannerview googlemobileads






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Jan 3 at 16:21







Konstantin Loginov

















asked Jan 3 at 16:14









Konstantin LoginovKonstantin Loginov

12.6k34276




12.6k34276













  • UITabBarController keeps the root UIViewControllers associated with its tabs alive in RAM after they have been instantiated even when you switch away to a different tab. If the ads in you UITableView are actually too RAM hungry to be kept alive, you're likely going to need to clean them up yourself when users switch away from the tab.

    – Dare
    Jan 3 at 16:31













  • Thanks for the input, @Dare . I did removeFromSuperview on the banner and nil the reference afterwards on viewWillDisappear - it's keep the CPU high (any better ways to clean up?) . Plus, what bugs me - the refresh stops working - so the framework is kind of know that ad shouldn't be on the screen..

    – Konstantin Loginov
    Jan 3 at 16:42











  • Are you calling destroy() on both banner and interstitial ads?

    – Dare
    Jan 3 at 16:48











  • @Dare I very well can be just stupid - but I don't see anything similar to destroy() (or synonyms) for GADBannerView class? (I've also set to nil both rootViewController and delegate for the banner - still same 16% CPU load)

    – Konstantin Loginov
    Jan 3 at 17:02





















  • UITabBarController keeps the root UIViewControllers associated with its tabs alive in RAM after they have been instantiated even when you switch away to a different tab. If the ads in you UITableView are actually too RAM hungry to be kept alive, you're likely going to need to clean them up yourself when users switch away from the tab.

    – Dare
    Jan 3 at 16:31













  • Thanks for the input, @Dare . I did removeFromSuperview on the banner and nil the reference afterwards on viewWillDisappear - it's keep the CPU high (any better ways to clean up?) . Plus, what bugs me - the refresh stops working - so the framework is kind of know that ad shouldn't be on the screen..

    – Konstantin Loginov
    Jan 3 at 16:42











  • Are you calling destroy() on both banner and interstitial ads?

    – Dare
    Jan 3 at 16:48











  • @Dare I very well can be just stupid - but I don't see anything similar to destroy() (or synonyms) for GADBannerView class? (I've also set to nil both rootViewController and delegate for the banner - still same 16% CPU load)

    – Konstantin Loginov
    Jan 3 at 17:02



















UITabBarController keeps the root UIViewControllers associated with its tabs alive in RAM after they have been instantiated even when you switch away to a different tab. If the ads in you UITableView are actually too RAM hungry to be kept alive, you're likely going to need to clean them up yourself when users switch away from the tab.

– Dare
Jan 3 at 16:31







UITabBarController keeps the root UIViewControllers associated with its tabs alive in RAM after they have been instantiated even when you switch away to a different tab. If the ads in you UITableView are actually too RAM hungry to be kept alive, you're likely going to need to clean them up yourself when users switch away from the tab.

– Dare
Jan 3 at 16:31















Thanks for the input, @Dare . I did removeFromSuperview on the banner and nil the reference afterwards on viewWillDisappear - it's keep the CPU high (any better ways to clean up?) . Plus, what bugs me - the refresh stops working - so the framework is kind of know that ad shouldn't be on the screen..

– Konstantin Loginov
Jan 3 at 16:42





Thanks for the input, @Dare . I did removeFromSuperview on the banner and nil the reference afterwards on viewWillDisappear - it's keep the CPU high (any better ways to clean up?) . Plus, what bugs me - the refresh stops working - so the framework is kind of know that ad shouldn't be on the screen..

– Konstantin Loginov
Jan 3 at 16:42













Are you calling destroy() on both banner and interstitial ads?

– Dare
Jan 3 at 16:48





Are you calling destroy() on both banner and interstitial ads?

– Dare
Jan 3 at 16:48













@Dare I very well can be just stupid - but I don't see anything similar to destroy() (or synonyms) for GADBannerView class? (I've also set to nil both rootViewController and delegate for the banner - still same 16% CPU load)

– Konstantin Loginov
Jan 3 at 17:02







@Dare I very well can be just stupid - but I don't see anything similar to destroy() (or synonyms) for GADBannerView class? (I've also set to nil both rootViewController and delegate for the banner - still same 16% CPU load)

– Konstantin Loginov
Jan 3 at 17:02














0






active

oldest

votes












Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54026017%2fadmob-video-ad-in-gadbannerview-is-keep-using-cpu-after-a-tab-change-in-uitabbar%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54026017%2fadmob-video-ad-in-gadbannerview-is-keep-using-cpu-after-a-tab-change-in-uitabbar%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Can a sorcerer learn a 5th-level spell early by creating spell slots using the Font of Magic feature?

Does disintegrating a polymorphed enemy still kill it after the 2018 errata?

A Topological Invariant for $pi_3(U(n))$