Сломанные цвета в теме DayNight после загрузки рекламы Admob/Firebase
Я использую Theme.AppCompat.DayNight.NoActionBar
тема для моего приложения. Когда я загружаю adMob interstital, некоторые цвета нарушаются в "ночном" режиме (т.е. в RecyclerView).
экран:
Эти неправильные цвета взяты из "ночных" значений. Когда я закрываю приложение и запускаю его снова, все в порядке. Когда я убиваю приложение, у меня такая же ситуация.
Код деятельности:
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
1 ответ
Проблема предположительно вызвана 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);
Источник: https://groups.google.com/forum/#!msg/google-admob-ads-sdk/OZzHq_-wAFY/K50jClZcBAAJ
Мы использовали этот подход, и недавно мы заметили, что у нас возникают сбои на устройствах Samsung с Android P. Вот отчет о сбое, который мы получаем
У нас есть new WebView(getApplicationContext());
в нашем коде приложения.
java.lang.RuntimeException:
at android.app.ActivityThread.handleBindApplication (ActivityThread.java:6163)
at android.app.ActivityThread.access$1200 (ActivityThread.java:235)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1768)
at android.os.Handler.dispatchMessage (Handler.java:106)
at android.os.Looper.loop (Looper.java:214)
at android.app.ActivityThread.main (ActivityThread.java:6986)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1445)
Caused by: java.lang.RuntimeException:
at org.chromium.android_webview.AwBrowserProcess.a (PG:40)
at vo.c (PG:88)
at vo.b (PG:152)
at vo.a (PG:133)
at com.android.webview.chromium.WebViewChromiumFactoryProvider.a (PG:239)
at com.android.webview.chromium.WebViewChromium.init (PG:44)
at android.webkit.WebView.<init> (WebView.java:678)
at android.webkit.WebView.<init> (WebView.java:604)
at android.webkit.WebView.<init> (WebView.java:587)
at android.webkit.WebView.<init> (WebView.java:574)
at android.webkit.WebView.<init> (WebView.java:564)
at com.original.works.OriginalWorkApplication.initializeWebView (OriginalWorkApplication.java:56)
at com.original.works.OriginalWorkApplication.onCreate (OriginalWorkApplication.java:22)