为什么Android Facebook Audience网络即使在调用destroy方法后也会泄漏活动?

时间:2016-10-10 22:46:36

标签: java android facebook ads facebook-audience-network

我在我正在构建的Android应用中使用Facebook的Audience Network。我的onCreate方法代码是,

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity);

this.facebookAdOneLayout = (RelativeLayout) findViewById(R.id.facebook_ads_one);

loadFacebookBannerAds();

}

我的代码正在加载Facebook广告,

private void loadFacebookBannerAds() {
        this.facebookAdOne = new com.facebook.ads.AdView(this, getString(R.string.fb_ad_id_one),
                AdSize.BANNER_320_50);


        //This setting is to load test ads served by Facebook. Just delete whole line in live app
        AdSettings.addTestDevice("TestDeviceID");

        this.facebookAdOneLayout.addView(this.facebookAdOne);

        this.facebookAdOne.loadAd();

    }

现在,我也在onPause,onDestroy和onStop中调用destroy()方法来销毁facebook广告

if (facebookAdOne != null) {
            facebookAdOne.destroy();
        }

在调用Facebook的destroy方法后,我也调用onPause,onStop和onDestroy的所有超级方法。因此,当我通过单击后退按钮退出活动时,在我的Android监视器中,我收到一条错误消息,说明了,

Activity test.app.MainActivity has leaked IntentReceiver com.facebook.ads.internal.h$c@94eb1f that was originally registered here. Are you missing a call to unregisterReceiver()?


android.app.IntentReceiverLeaked: Activity test.app.MainActivity has leaked IntentReceiver com.facebook.ads.internal.h$c@94eb1f that was originally registered here. Are you missing a call to unregisterReceiver()?

所以有人能告诉我该怎么做?错误在哪里?我尝试了很多方法来为此找到解决办法,但无法在网上获得任何内容。

谢谢,

1 个答案:

答案 0 :(得分:1)

Facebook Audience network changelog中,有一行提到由版本4。16。0(2016年9月27日发布)中的内部类LocalBroadcastReceiver引起的内存泄漏。

  

LocalBroadcastReceiver持有MediaView导致内存泄漏   参考

如果您创建了许多MediaView,实例使用的资源将无法正确释放,最终会导致OutOfMemoryError。 从版本4.16.0,这个错误似乎是修复的,我注意到没有内存泄漏。

不幸的是,版本4.16.0中似乎出现了另一个问题。 根据我的经验,MediaView中的视频不再自动播放。此外,自动播放的控制已被删除,我们可以阅读4.16.0 changelog:

  

在MediaView

中弃用了setAutoplay和setAutoplayOnMobile

对于高达4.18.0(含)的版本,这仍然适用。我无法使用版本4.19.0进行测试,因为它在自定义视图的膨胀期间神秘地使我的应用程序崩溃(仍在试图找出原因)。