Сломанные цвета в теме 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)
Другие вопросы по тегам