Otimização de desempenho do Android - otimização da velocidade de inicialização do aplicativo

Insira a descrição da imagem aqui

Tela branca e tela preta quando o aplicativo é iniciado

Durante o desenvolvimento, setContentView (View) será chamado no método onCreate () da Activity para definir o layout da Activity, então o problema está aqui, já que definimos o layout, por que há uma tela branca ou preta na inicialização em vez de exibir o layout definido O que? Vamos analisar os motivos juntos a seguir.
Ao abrir uma Activity, se o Application ao qual a Activity pertence não estiver rodando, o sistema irá criar um processo para a Activity (Cada processo é aberto, haverá um Application, então o onCreate () do Application pode ser chamado várias vezes, uma O processo é chamado uma vez), mas leva tempo para criar e inicializar o processo. Se a inicialização demorar muito para que esta ação seja concluída, pode não haver nenhum movimento na tela e o usuário vai pensar que o botão não foi clicado. Então, o que devo fazer se não consigo parar no local original sem exibir a nova interface? Ele tem a aparência de StartingWindow (também chamado de PreviewWindow), que parece que a Activity foi iniciada, mas o conteúdo dos dados não foi inicializado.
Código-fonte:
ao iniciar a atividade raiz: ActivityStack # startActivityLocked -> showStartingWindow

StartingWindow geralmente aparece antes que o processo do aplicativo seja criado e inicializado com sucesso, portanto, é uma janela temporária e o WindowType correspondente é TYPE_APPLICATION_STARTING. O objetivo é informar ao usuário que o sistema aceitou a operação, está respondendo, percebe o propósito da IU depois que o programa é inicializado e remove a janela ao mesmo tempo.

Esta StartingWindow é a causa raiz da tela branca e da tela preta.Geralmente, o desenvolvedor irá definir o Tema para o Aplicativo e Atividade, e o sistema irá inicializar a StartingWindow de acordo com o Tema definido. O nível superior na janela é DecorView, StartingWindow exibe uma DecorView vazia, mas aplicará o Tema especificado por esta Activity a esta DecorView.Se a Activity não especificar o Tema, então o Aplicativo será usado (Aplicativo é um requisito do sistema que o Tema deve ser definido).

No Tema, você pode especificar o fundo da janela, o ÍCONE da Atividade, a cor geral do texto do APP, etc. Se nenhum atributo for especificado, os atributos padrão serão usados, que é o DecorView vazio mencionado acima, portanto, nossa tela branca e tela preta Ele está intimamente relacionado ao DecorView vazio. O estilo que definimos para o APP determina se é uma tela branca ou preta.

1. Se o tema da série Preta for selecionado, a tela ficará preta quando a Atividade pular:

@android:style/Theme.Black"

2. Se você escolher o tema da série Light, a tela ficará em branco quando a atividade pular:

@android:style/Theme.Light"

Solução

1. Defina o tema da imagem de fundo
definindo uma imagem de fundo. Quando o programa iniciar, primeiro exiba esta imagem de fundo para evitar uma tela preta

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="android:screenOrientation">portrait</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowBackground">>@mipmap/splash</item>
        <item name="android:windowIsTranslucent">true</item>        
</style>

2. Defina o tema transparente
Ao definir o estilo como transparente, a tela não ficará preta depois que o programa for iniciado, mas todo será transparente. Ele será exibido de uma só vez após a inicialização da interface

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
  		<item name="android:screenOrientation">portrait</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowIsTranslucent">true</item>      
</style>

Comparação dos dois: o
primeiro: o programa inicia rapidamente, a interface primeiro exibe a imagem de fundo e, em seguida, atualiza outros controles da interface. No entanto, se a imagem de fundo e o estilo da página a ser exibida forem muito diferentes, isso dará ao usuário uma sensação de atualização fora de sincronia.
O primeiro tipo: para dar ao usuário a sensação de que o programa inicia lentamente, a interface é exibida uma vez, atualizada e sincronizada.

3. Remova PreviewWindow

    <style name="AppStarTheme" parent="AppTheme">
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowBackground">@null</item>
        <item name="android:windowDisablePreview">true</item>
    </style>

Isso fará com que o usuário pense erroneamente que não há sensação de clique após clicar no ícone do aplicativo na área de trabalho

Acho que você gosta

Origin blog.csdn.net/yzpbright/article/details/109136679
Recomendado
Clasificación