gpt4 book ai didi

android - admob 使用的 WebViewCoreThread AdView 使用高 CPU,即使父 Activity 已暂停

转载 作者:可可西里 更新时间:2023-11-01 18:46:06 26 4
gpt4 key购买 nike

<分区>

我正在使用 Google Admob SDK v6.1.0 (https://developers.google.com/mobile-ads-sdk/download),我以编程方式实例化 com.google.ads.AdView(不是在 XML 中) ,并在我的 Activity 中动态地将其添加到 LinearLayout 中。

我的一位用户报告说,当他们在我的 Activity 中单击“主页”按钮(以便将其置于后台)时,他们开始看到我的应用程序的 CPU 使用率很高。我能够在 Jellybean 平台上重现这一点,并注意到高 CPU 使用率的来源是 WebViewCoreThread。

我的 Activity 根本不使用任何 WebView,但我能够逐步完成 Activity 的初始化,并注意到此 WebViewCoreThread 在我实例化 AdMob AdView 对象时启动。正如 AdMob 引用资料中所述,我在 Activity 的 onDestroy() 方法中调用了此 AdView 上的 destroy()。我还更改了我的代码以在我的 onPause() 方法中调用 AdView.onDestroy() 。但似乎没有什么导致 WebViewCoreThread 停止。我想,如果那条线还在,我就没事了。但是,如果我一遍又一遍地多次启动我的 Activity,这个线程就会开始使用我 CPU 的 8% 到 25%,即使我的 Activity 不在前台。

我注意到一些其他用户说您必须调用 WebView.onPause() 作为纠正措施。 (http://stackoverflow.com/questions/2040963/webview-threads-never-stop-webviewcorethread-cookiesyncmanager-http0-3) 但这对我来说不是直接可能的,因为我的 WebView 是由 AdMob 的 AdView 创建的。我还更改了我的代码,为 mt Admob AdView 的容器 LinearLayout 对象调用 .removeAllViews(),然后调用 System.gc() 以强制进行垃圾收集,但似乎没有什么能杀死我的 WebViewCoreThread,最终它开始占用 CPU,直到我强制- 终止我的应用进程。

AdMob 这样做的任何线索,以及我如何强制终止该线程?

我正在附加一个我创建的类来封装 AdView 的创建和销毁。我在 Activity 的初始化中调用了此类的 getNewAd() 方法。我在 Activity 的 onPause() 和 onDestroy() 方法中调用了此类的 removeAd():

package com.shiprack.client;

import com.google.ads.AdRequest;
import com.google.ads.AdSize;
import com.google.ads.AdView;
import com.mobclix.android.sdk.Mobclix;
import com.mobclix.android.sdk.MobclixMMABannerXLAdView;

import android.app.Activity;
import android.view.Gravity;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;

public class AdManager {
public AdManager(EventLog logger, LinearLayout container, Activity activity) {
_container = container;
_activity = activity;
_eventLogger = logger;
}

public void setNetwork(int network) {
_network = network;
}

public void getNewAd() {
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT);
params.gravity = Gravity.CENTER;
switch (_network) {
case TrackDatabase.AD_NETWORK_ADMOB: {
_admobBanner = new AdView(_activity, AdSize.BANNER, "a14dc419375634c");
_container.addView(_admobBanner, params);
_admobBanner.loadAd(new AdRequest());
break;
}
case TrackDatabase.AD_NETWORK_MOBCLIX: {
Mobclix.onCreate(_activity);
_mobclixBanner = new MobclixMMABannerXLAdView(_activity);
_container.addView(_mobclixBanner, params);
_mobclixBanner.getAd();
break;
}
}
}

public void removeAd() {
switch (_network) {
case TrackDatabase.AD_NETWORK_ADMOB: {
_admobBanner.destroy();
break;
}
case TrackDatabase.AD_NETWORK_MOBCLIX: {
_mobclixBanner.cancelAd();
break;
}
}
_container.removeAllViews();
}

private EventLog _eventLogger;
private LinearLayout _container;
private Activity _activity;
private AdView _admobBanner;
private MobclixMMABannerXLAdView _mobclixBanner;
private int _network;
}

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com