我为我的应用程序使用qazxsw poi主题。当我加载adMob interstitial时,某些颜色会在“夜间”模式下被破坏(即在RecyclerView中)。
屏幕:
Theme.AppCompat.DayNight.NoActionBar
那些不正确的颜色来自“notnight”值。当我关闭应用程序并再次运行它一切都很好。当我杀了应用程序时,我有同样的情况。
活动代码:
当我评论public class MainActivity extends AppCompatActivity {
static {
AppCompatDelegate.setDefaultNightMode(
AppCompatDelegate.MODE_NIGHT_AUTO);
}
private ArrayList<String> planetList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
populateRecycler();
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
PlanetAdapter adapter = new PlanetAdapter(planetList, getApplicationContext());
recyclerView.setAdapter(adapter);
InterstitialAd interstitialAd = new InterstitialAd(this);
interstitialAd.setAdUnitId("ca-app-pub-543543543/543543543");
AdRequest adRequest = new AdRequest.Builder().build();
interstitialAd.loadAd(adRequest);
}
private void populateRecycler() {
for (int i = 0; i < 20; i++) {
planetList.add("TEST");
}
}
}
一切都很好。
你可以在这里找到整个项目:interstitialAd.loadAd(adRequest)
该问题可能是由github重置UI模式引起的,这可以通过手动实例化WebView
来解决。
这样做后我没有看到这个问题(在这个特定的应用程序中的WebView
):
Application.oncreate()
资料来源: if (nightMode != AppCompatDelegate.MODE_NIGHT_NO) {
Log.d(TAG, "Manually instantiating WebView to avoid night mode issue.");
try {
new WebView(getApplicationContext());
} catch (Exception e) {
Log.e(TAG, "Got exception while trying to instantiate WebView to avoid night mode issue. Ignoring problem.", e);
}
}
AppCompatDelegate.setDefaultNightMode(nightMode);
我们使用这种方法,我们最近注意到我们在使用Android P的三星设备上遇到了崩溃。这是我们得到的崩溃报告
我们的应用程序代码中有https://groups.google.com/forum/#!msg/google-admob-ads-sdk/OZzHq_-wAFY/K50jClZcBAAJ。
new WebView(getApplicationContext());