java - 为什么 Android Facebook Audience 网络即使在调用 destroy 方法后仍会泄漏 Activity ?

标签 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 的所有 super 方法。因此,当我通过单击后退按钮退出 Activity 时,在我的 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()?

谁能告诉我该怎么做?错误在哪里?我尝试了很多来寻找解决方案,但在网上找不到任何东西。

谢谢,

最佳答案

Facebook Audience network changelog , 有一行提到 4.16.0 版本(2016 年 9 月 27 日发布)中内部类 LocalBroadcastReceiver 导致的内存泄漏。

Memory leak caused by LocalBroadcastReceiver holding onto MediaView reference

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

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

setAutoplay and setAutoplayOnMobile deprecated in MediaView

对于 4.18.0(含)之前的版本仍然如此。我无法使用 4.19.0 版进行测试,因为它神秘地使我的应用程序在自定义 View 膨胀期间崩溃(仍在尝试找出原因)。

关于java - 为什么 Android Facebook Audience 网络即使在调用 destroy 方法后仍会泄漏 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39967885/

相关文章:

java - 删除哈希表中的方法

java - 切换 JCheckBox 值

ios - 检查用户是否是粉丝页面 ios

java - 将图像发布到 Facebook 页面

Facebook 帐户链接,任何人都可以提供小示例代码吗?

java - 在哪里可以找到适用于 Java ME 的良好二维代码库?

java - Intent 的 RecyclerView 中未检测到 OnClick

安卓工作室 : Error while installing apk

带有自定义适配器的 Android DrawerLayout 和 Listview

java - Android 9.0使用intent打开图像总是显示黑色结果