【问题标题】:Performance issue with Admob banners in multiple fragments多个片段中的 Admob 横幅的性能问题
【发布时间】:2017-12-03 21:38:01
【问题描述】:

我有一个应用程序,它有一个使用 FrameLayout 的主要活动。许多片段是根据用户的输入创建的。每个片段都有一个使用 Adview 的 admob 横幅广告。

我使用代码添加片段;

getSupportFragmentManager().beginTransaction()
                           .add(R.id.container, Constants.frg1, Constants.frgTag1)
                           .addToBackStack(Constants.frgTag1)
                           .commit();

我不想使用transaction.replace() 方法,因为我不希望在回压所有片段都从远程服务器获取数据时重新创建我以前的片段。

所以当我添加新片段时,会在 onCreateView 方法中的新片段内创建一个新的 Adview。

在获得大约 10 个片段后,我的应用开始变得迟钝。当我不使用 Adview 时,性能没有问题。

您可以说我只能在包含片段的 MainActivity 中使用一个 Adview,但我不希望这样,因为我有一个在应用程序中可见的 BottomNavigationView。 BottomNavigationBar + Adview = 我的应用内容在屏幕上几乎没有剩余空间。

那么有什么想法可以使用许多片段来优化我的应用程序性能并且每个片段都有自己的AdView?

【问题讨论】:

  • 在单个活动中,您是否使用视图分页器来托管多个片段?
  • @CheokYanCheng 不,我在主要活动中有 FrameLayout 并向其中添加片段。
  • 你的片段由什么组成?

标签: android android-fragments admob banner adview


【解决方案1】:

在获得大约 10 个片段后,我的应用开始变得迟钝。当我不 使用 Adview 性能没有问题。

如果您向 backStack 添加多个 Fragment,您的应用将需要更多资源来存储这些元素,现在在每个 Fragment 上添加一个广告会导致资源消耗高、电池消耗快、应用缓慢等。

在应用程序中使用Fragments是为了在一个Activity中表示一个UI的一部分,实际上你将使用一个完整的Fragment来改变一个Activity中的所有UI。

在 backstack 中保留几个 Fragments 几乎就像在堆栈中保留几个 Activies,这种方法是不正确的,会导致您的应用程序出现问题!

如何使用多个片段/广告优化您的应用

1)使用你的Activity的onPause()方法销毁广告,如果你正在使用Activity,使用onResume()重新创建它

How to solve adview CPU consuming.

2) 通过java代码实现Admob:

AdMob banners cause high CPU usage

3) 启用hardware Acceleration:

启用您的活动:

 <activity android:hardwareAccelerated="true" />

或在您的所有应用程序中:

<application android:hardwareAccelerated="true">

4) 最重要的是,尝试改变您的方法,如果您使用的是片段,您将进行事务以使内存中只有一个。

【讨论】:

    【解决方案2】:

    有几种方法可以解决这个问题:

    1- 替换片段而不是添加它们。我知道您的片段正在从服务器获取数据,为了解决此问题,请在模型层中使用某种内存或基于磁盘的缓存策略以避免不必要的网络请求。

    2- 使用多个活动并在所有活动中划分应用程序的职责。

    【讨论】:

      【解决方案3】:

      使用片段替换而不是添加它们,并且在所有片段内部在onCreate 方法中调用setRetainInstance(true); 在super.onCreate(savedInstanceState); 之前避免片段在被反压时重新创建。并且在片段内部检查它是否加载了服务器数据已经。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-10
        • 2019-10-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多