android - 您是否需要为 AdView 显式调用 pause、resume、destroy?

标签 android admob ads android-lifecycle

AdView 是自动绑定(bind)到 Activity 生命周期还是必须显式调用 pause , resume , destroy事件?是否取决于 AdView 的大小?我正在使用横​​幅广告。
我找不到很多其他人这样做的代码示例,并且主要的 Android 帮助文章没有提到它(他们只是在 onCreate 中加载广告并且不使用它做任何其他事情)。
https://developers.google.com/android/reference/com/google/android/gms/ads/AdView
(代码示例包括暂停/恢复/销毁,它在方法说明中提到我们“应该调用这些方法”,但没有详细说明)。
https://developers.google.com/admob/android/banner
(没有提到需要暂停/恢复/销毁)。
http://thetechnocafe.com/a-complete-guide-to-integrating-admob-in-your-android-app/
(暂停并销毁代码中的视频广告,但未提及原因或给出任何解释)

<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

    <!-- app content -->

    <com.google.android.gms.ads.AdView
            xmlns:ads="http://schemas.android.com/apk/res-auto"
            android:id="@+id/myAdView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            ads:adSize="BANNER"
            ads:adUnitId="ca-app-pub-3940256099942544/6300978111">
    </com.google.android.gms.ads.AdView>
</LinearLayout>
public class MainActivity extends AppCompatActivity {
    private AdView mAdView;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // ...

        mAdView = findViewById(R.id.myAdView);
        AdRequest adRequest = new AdRequest.Builder().build();
        mAdView.loadAd(adRequest);
    }

    // do I need this code as well???
    @Override
    public void onResume() {
        mAdView.resume();
        super.onResume();
    }
    
    @Override
    public void onPause() {
        mAdView.pause();
        super.onPause();
    }
    
    @Override
    public void onDestroy() {
        mAdView.destroy();
        super.onDestroy();
    }

最佳答案

是的,我们需要添加这些代码行以节省可用内存量。

    @Override
    public void onResume() {
        super.onResume();
        mAdView.resume();
    }
您将 adview 的 resume() 移动到 super 构造函数下方。

关于android - 您是否需要为 AdView 显式调用 pause、resume、destroy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57679079/

相关文章:

android - noclassdeffounderror com.google.android.gms.ads.AdView

android - 在 Android 4 中更改首选项摘要文本颜色

java - 将 JSON 数据填充到 ListView

android - AdMob 广告单元 ID 需要多长时间才能生效?

ios - Google原生广告在请求广告时出错

ios - 我一直收到此错误 "unexpectedly found nil while unwrapping an Optional value"为什么?

Android:在不同的 Activity 中重复使用相同的 View 对象(案例是关于广告横幅)

javascript - 可展开横幅的标准 z 索引。

java - 修复软键盘上方的布局

android - 如何将用户身份验证放入移动应用程序