这是我的代码:
AndroidView(
modifier = modifier,
factory = {
val view =
LayoutInflater.from(context).inflate(R.layout.native_ad, null, true)
val adView = view.findViewById<TemplateView>(R.id.medium_ad_template)
adView.apply {
AdLoader.Builder(context, context.getString(AR.string.native_unit_id))
.forNativeAd { nativeAd ->
setStyles(NativeTemplateStyle.Builder().build())
setNativeAd(nativeAd)
}
.build()
.loadAd(request)
}
view
}
)
native_ad.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.ads.nativetemplates.TemplateView
android:id="@+id/medium_ad_template"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:gnt_template_type="@layout/gnt_medium_template_view" />
</LinearLayout>
广告不断刷新屏幕导航
我尝试在第一次加载时设置一个标记,并不断检查它以查看广告是否已经加载,但是视图刷新了,标记重置为默认值
3条答案
按热度按时间jtw3ybtb1#
在您的情况下,我认为视图是重新创建的,因为当您更改屏幕以停止尝试rememberSaveable时,您的标志值被重置,如下所示。
rememberSaveable类似于remember,但存储的值可以在进程死亡或配置更改后继续存在。
我希望它能起作用
kmpatx3s2#
它看起来像你需要一些标志,将记住,将允许控制不再重新加载广告。所以你有没有检查与
rememberUpdatedState
以下是相同文档链接
https://developer.android.com/jetpack/compose/side-effects#rememberupdatedstate
wmomyfyw3#
根据我对你的问题的理解,副作用是你需要的。把AndroidView方法放在一个副作用块中,并定义你想要更新的块。
注意:如果你不想更新区块,那么只需在启动效果中用一个字符串代替键。