Migracja implementacji ekranu powitalnego na Androida 12 lub nowszego

Jeśli wdrożysz niestandardowy ekran powitalny w Androidzie 11 lub starszym, do interfejsu API SplashScreen, aby ułatwić sprawdź, czy wyświetla się prawidłowo na Androidzie 12 i nowszych.

Od Androida 12 system stosuje domyślne powitanie systemu Android Ekran włączony zimno i ciepło uruchamia się w przypadku wszystkich aplikacji. Domyślnie ten systemowy ekran powitalny jest zbudowany z elementu ikony programu uruchamiającego aplikację oraz windowBackground motywu, jeśli jest on tylko w jednym kolorze.

Jeśli tego nie zrobisz, będzie można uruchamiać ją na Androidzie 12 lub może później ulec pogorszeniu lub przynieść niezamierzone efekty.

  • Jeśli Twój obecny ekran powitalny został zaimplementowany za pomocą motyw niestandardowy, który zastępuje android:windowBackground, system zastąpi niestandardowy ekran powitalny domyślnym systemem Android ekranu powitalnego na Androidzie 12 i nowszych. Może to nie być zamierzone przez Twoją aplikację i uzyskiwanie dodatkowych informacji.

  • Jeśli korzystasz z obecnego ekranu powitalnego za pomocą dedykowanego Activity, uruchomienie aplikacji na urządzeniach z Androidem 12 lub nowszym przekłada się zduplikowane ekrany powitalne: ekranu powitalnego systemu a następnie aktywność na ekranie powitalnym.

Aby temu zapobiec, możesz wykonać opisane w tym dokumencie. Po migracji interfejs API skraca czas uruchamiania, daje pełną kontrolę nad ekranem powitalnym, i zapewnia większą spójność podczas uruchamiania z innymi aplikacjami na tej platformie.

Biblioteka kompatybilna SplashScreen

Możesz używać interfejsu API SplashScreen bezpośrednio, ale zdecydowanie zalecamy użycie interfejsu Biblioteka kompatybilna z Androidem SplashScreen . Biblioteka compat korzysta z interfejsu API SplashScreen, wsteczną oraz zapewnia spójny wygląd i sposób działania ekranu powitalnego we wszystkich wersjach Androida. Ten dokument jest napisany w kompatybilnym bibliotece.

Jeśli przeprowadzasz migrację bezpośrednio przy użyciu interfejsu API SplashScreen na Androidzie 11 i starszych ekran powitalny wygląda dokładnie tak samo jak przed migracją. Data rozpoczęcia: Ekran powitalny w Androidzie 12 ma wygląd i styl Androida 12.

Jeśli przeprowadzisz migrację za pomocą biblioteki zgodnej SplashScreen, system wyświetli ten sam ekran powitalny na wszystkich wersjach Androida.

Migracja implementacji ekranu powitalnego

Aby przenieść istniejący ekran powitalny: w Androidzie 12 i nowszych.

Ta procedura ma zastosowanie do każdego typu implementacji, którą przenosisz . Jeśli przeprowadzasz migrację z dedykowanej usługi Activity, postępuj zgodnie z najlepszymi metod weryfikacji opisanych w tym dokumencie, dostosowany ekran powitalny Activity. Interfejs SplashScreen API ogranicza też uruchamianie związane z czasem oczekiwania dzięki dedykowanej aktywności na ekranie powitalnym.

Aby przenieść ekran powitalny:

  1. W pliku build.gradle zmień compileSdkVersion i uwzględnij biblioteki kompatybilnej SplashScreen w zależności.

    build.gradle
    
    android {
       compileSdkVersion 31
       ...
    }
    dependencies {
       ...
       implementation 'androidx.core:core-splashscreen:1.0.0-beta02'
    }
    
  2. Utwórz motyw z elementem nadrzędnym: Theme.SplashScreen. Ustaw wartość argumentu postSplashScreenTheme do motywu, którego musi używać Activity, a atrybut wartość windowSplashScreenAnimatedIcon na obiekt rysowalny lub animowany, obiekt rysowalny. Pozostałe atrybuty są opcjonalne.

    <style name="Theme.App.Starting" parent="Theme.SplashScreen">
       <!-- Set the splash screen background, animated icon, and animation
       duration. -->
       <item name="windowSplashScreenBackground">@color/...</item>
    
       <!-- Use windowSplashScreenAnimatedIcon to add a drawable or an animated
            drawable. One of these is required. -->
       <item name="windowSplashScreenAnimatedIcon">@drawable/...</item>
       <!-- Required for animated icons. -->
       <item name="windowSplashScreenAnimationDuration">200</item>
    
       <!-- Set the theme of the Activity that directly follows your splash
       screen. This is required. -->
       <item name="postSplashScreenTheme">@style/Theme.App</item>
    </style>
    

    Jeśli chcesz dodać kolor tła pod ikoną, możesz użyć przycisku Theme.SplashScreen.IconBackground i ustaw ten motyw windowSplashScreenIconBackground.

  3. W pliku manifestu zastąp motyw początkowej aktywności motywem, którego używasz. utwórz w poprzednim kroku.

    <manifest>
       <application android:theme="@style/Theme.App.Starting">
        <!-- or -->
            <activity android:theme="@style/Theme.App.Starting">
    ...
    
  4. Zanim zadzwonisz, zadzwoń pod numer installSplashScreen w ramach początkowej aktywności super.onCreate()

    Kotlin

    class MainActivity : Activity() {
    
       override fun onCreate(savedInstanceState: Bundle?) {
           // Handle the splash screen transition.
           val splashScreen = installSplashScreen()
    
           super.onCreate(savedInstanceState)
           setContentView(R.layout.main_activity)
    ...
    

    Java

    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
             // Handle the splash screen transition.
             SplashScreen splashScreen = SplashScreen.installSplashScreen(this);
    
             super.onCreate(savedInstanceState);
             setContentView(R.layout.main_activity);
        }
    }
    

installSplashScreen zwraca obiekt ekranu powitalnego, który możesz opcjonalnie służy do dostosowywania animacji lub do wyświetlania ekranu powitalnego przez dłuższy czas czas trwania kampanii. Więcej informacji o dostosowywaniu animacji znajdziesz w sekcji Wyświetlaj ekran powitalny przez dłuższy czas oraz Dostosuj animację zamykającą ekran powitalny

Dostosuj spersonalizowaną aktywność na ekranie powitalnym do ekranu powitalnego

Po przejściu na ekran powitalny na Androidzie 12 i nowszych zdecyduj, co w porównaniu z poprzednim niestandardowym ekranem powitalnym (Activity). Masz: opcje:

  • Zachowaj niestandardową aktywność, ale zablokuj jej wyświetlanie.
  • Zachowaj niestandardową aktywność na potrzeby promowania marki.
  • Usuń tę aktywność i dostosuj aplikację według potrzeb.

Zapobiegaj wyświetlaniu się niestandardowej aktywności

Jeśli poprzedni ekran powitalny (Activity) jest używany głównie do routingu, zastanów się, jak można je usunąć. Możesz na przykład podać bezpośredni link lub przejść do pojedynczego działania z podskładnikami. Jeśli nie jest, możesz użyć funkcji SplashScreen.setKeepOnScreenCondition , aby pozostawiać aktywność routingu na swoim miejscu, ale zatrzymać renderowanie. Robię to przenosi ekran powitalny do następnego działania i wspomaga płynne przejścia.

Kotlin

  class RoutingActivity : Activity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        val splashScreen = installSplashScreen()
        super.onCreate(savedInstanceState)

        // Keep the splash screen visible for this Activity.
        splashScreen.setKeepOnScreenCondition { true }
        startSomeNextActivity()
        finish()
     }
   ...
  

Java

  public class RoutingActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
      SplashScreen splashScreen = SplashScreen.installSplashScreen(this);

       super.onCreate(savedInstanceState);

       // Keep the splash screen visible for this Activity.
       splashScreen.setKeepOnScreenCondition(() -> true );
       startSomeNextActivity();
       finish();
    }
  ...
  

Zachowaj niestandardową aktywność na potrzeby promowania marki

Jeśli do promowania marki chcesz używać poprzedniego ekranu powitalnego Activity, umożliwia przejście z ekranu powitalnego systemu na niestandardowy ekran powitalny Activity, dostosowując animację zamykania ekranu powitalnego ekranu. Lepiej jednak w miarę możliwości unikać takich sytuacji i korzystać z tagu SplashScreen Interfejs API do promowania marki na ekranie powitalnym.

Jeśli musisz wyświetlić okno, zalecamy wyświetlanie go nad kolejnym niestandardowym działaniem na ekranie powitalnym lub nad główną aktywnością po ekranie powitalnym systemu.

Usuń aktywność na niestandardowym ekranie powitalnym

Ogólnie zalecamy usunięcie poprzedniego niestandardowego ekranu powitalnego (Activity) całkowicie uniknąć powielania ekranów powitalnych i zwiększyć wydajność, oraz skrócenie czasu wczytywania ekranu powitalnego. Istnieją różne techniki, możesz uniknąć wyświetlania zbędnych aktywności na ekranie powitalnym.

  • Używaj leniwego ładowania komponentów, modułów i bibliotek. Unikaj wczytywania lub inicjowanie komponentów lub bibliotek, które nie są wymagane do jak i w przyszłości. Wczytaj je później, gdy aplikacja ich będzie potrzebować.

    Jeśli aplikacja naprawdę wymaga jakiegoś komponentu do prawidłowego działania, ładuj go tylko wtedy, gdy jest które są naprawdę potrzebne, a nie w momencie uruchomienia, lub użyj wątku w tle, aby go wczytać po uruchomieniu aplikacji. Postaraj się, aby urządzenie Application.onCreate() było tak lekkie jak to tylko możliwe.

    Inne korzyści to także: Biblioteka startowa aplikacji do inicjowania komponentów podczas uruchamiania aplikacji. Pamiętaj, by w dalszym ciągu wczytywać wszystkie są wymagane do rozpoczęcia i nie wprowadzają w błąd, leniwie ładowane moduły stają się dostępne.

  • Utwórz obiekt zastępczy podczas wczytywania lokalnej ilości danych. Użyj zalecane podejście do tematyki i wstrzymywanie renderowania do czasu, aż aplikacja gotowe. Aby wdrożyć ekran powitalny, który jest zgodny wstecznie, postępuj zgodnie z instrukcjami czynności opisane w Zadbaj o to, aby ekran powitalny był widoczny przez dłuższy czas.

  • Pokaż obiekty zastępcze. W przypadku obciążeń sieciowych o nieokreślonym czasie trwania zamknij ekran powitalny i pokaż obiekty zastępcze dla wczytywania asynchronicznego. Rozważ użycie w obszarze treści subtelnych animacji, które będą odzwierciedlać stanu wczytywania. Upewnij się, że struktura wczytanej treści odpowiada struktura szkieletowa a także zapewnić płynne przejście po załadowaniu treści.

  • Używaj buforowania. Gdy użytkownik otworzy aplikację po raz pierwszy, możesz pokazać wskaźniki wczytywania niektórych elementów interfejsu, jak na ilustracji poniżej. następnym razem, gdy użytkownik wróci do aplikacji, możesz wyświetlić tę zawartość z pamięci podręcznej wczytują się nowsze treści.

.
Rysunek 1. Wyświetlam obiekty zastępcze UI.