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;
}
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:
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):
Version of the AdMob:
'Firebase/AdMob', '~>5.15.0' (from cocoapods)
Any suggestions are very welcomed.
ios swift admob gadbannerview googlemobileads
add a comment |
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:
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):
Version of the AdMob:
'Firebase/AdMob', '~>5.15.0' (from cocoapods)
Any suggestions are very welcomed.
ios swift admob gadbannerview googlemobileads
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 didremoveFromSuperview
on the banner and nil the reference afterwards onviewWillDisappear
- 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) forGADBannerView
class? (I've also set tonil
bothrootViewController
anddelegate
for the banner - still same 16% CPU load)
– Konstantin Loginov
Jan 3 at 17:02
add a comment |
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:
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):
Version of the AdMob:
'Firebase/AdMob', '~>5.15.0' (from cocoapods)
Any suggestions are very welcomed.
ios swift admob gadbannerview googlemobileads
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:
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):
Version of the AdMob:
'Firebase/AdMob', '~>5.15.0' (from cocoapods)
Any suggestions are very welcomed.
ios swift admob gadbannerview googlemobileads
ios swift admob gadbannerview googlemobileads
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 didremoveFromSuperview
on the banner and nil the reference afterwards onviewWillDisappear
- 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) forGADBannerView
class? (I've also set tonil
bothrootViewController
anddelegate
for the banner - still same 16% CPU load)
– Konstantin Loginov
Jan 3 at 17:02
add a comment |
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 didremoveFromSuperview
on the banner and nil the reference afterwards onviewWillDisappear
- 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) forGADBannerView
class? (I've also set tonil
bothrootViewController
anddelegate
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
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
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 onviewWillDisappear
- 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 tonil
bothrootViewController
anddelegate
for the banner - still same 16% CPU load)– Konstantin Loginov
Jan 3 at 17:02