我有一个应用程序的一个主要活动与framelayout。许多片段是根据用户的输入创建的。每个片段都有一个使用Adview
的AdMob横幅广告。
我使用代码添加片段;
getSupportFragmentManager().beginTransaction()
.add(R.id.container, Constants.frg1, Constants.frgTag1)
.addToBackStack(Constants.frgTag1)
.commit();
我不想使用
transaction.replace()
方法,因为我不想在所有片段都从远程服务器获取数据的情况下重新创建以前的片段。因此,当我添加新片段时,在
onCreateView
方法中的新片段内部会创建一个新的adview。在得到大约10个片段后,我的应用程序开始变得滞后。当我不使用adview时,性能没有问题。
您可以说,我只能在包含片段的main活动中使用一个adview,但我不希望这样,因为我有一个沿应用程序可见的bottomnavigationview。BottomNavigationBar+Adview=我的应用程序内容在屏幕上只剩下很少的位置。
那么,有什么办法可以使用多个片段优化我的应用程序性能,每个片段都有自己的
AdView
? 最佳答案
在得到大约10个片段后,我的应用程序开始变得滞后。当我不
使用adview性能没有问题。
如果你正在向backbackback添加多个片段,你的应用程序将需要更多的资源来存储这些元素,现在在每个片段上添加一个广告结果将是高资源消耗、快速电池消耗、缓慢的应用程序等。
在应用程序中使用Fragments是为了表示活动中ui的一部分,实际上您将使用一个完整的片段来更改活动中的所有ui。
在backback中保留多个Fragments
几乎就像在堆栈中保留多个活动一样,这种方法是不正确的,会导致应用程序出现问题!
如何使用多个片段/广告优化你的应用程序
1)使用活动的onPause()
方法销毁广告,如果使用活动,则使用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)最重要的是,尝试改变你的方法,如果你使用的是片段,你将使事务在内存中只有一个。