← Todas as extensões

Extensão nativa

KlugBlackScreen

com.klug.blackscreen

NÃO É NECESSÁRIO APM. Baixe e aproveite. Não tem como ser mais simples.

Restaura a tela no Android depois que uma janela do sistema, como um pedido de permissão, um diálogo ou o teclado, é fechada.

Android Em desenvolvimento

Visão geral

Em alguns dispositivos Android, a tela de um app pode ficar preta depois que uma janela do sistema é fechada sobre ela: um pedido de permissão, um diálogo ou o teclado na tela. O app continua em execução, mas nada é desenhado até a próxima mudança.

O KlugBlackScreen redesenha a view do app assim que uma dessas janelas é fechada. Ativado uma vez na inicialização, ele funciona automaticamente em segundo plano. Para casos especiais, também pode ser acionado diretamente.

Recursos

  • Modo automático: ative uma vez, e ele redesenha após cada janela do sistema
  • Redesenho manual para casos especiais
  • Um redesenho suave, sem cintilação, e outro mais forte para casos teimosos
  • Não faz nada em outras plataformas, então o código pode permanecer em um app multiplataforma

Plataformas compatíveis

Android arm64 · armv7

Primeiros passos

Adicione a extensão ao descritor do seu aplicativo:

app.xml
<extensions>
    <extensionID>com.klug.blackscreen</extensionID>
</extensions>

Exemplos de código

Três fluxos. Cada chamada retorna imediatamente e faz seu trabalho na UI thread do Android; em outras plataformas, as chamadas não fazem nada.

1 · Ativar uma vez na inicialização
Main.as
import com.klug.blackscreen.BlackScreen;

// once, in the constructor of your main class: from now on the view is redrawn
// whenever the app window gets the focus back, after a permission prompt,
// a dialog, the keyboard or another activity
BlackScreen.getInstance().startAuto();   // a second call has no effect

// iOS, macOS and desktop: isSupported is false and every call does nothing,
// so no platform check is needed. stopAuto() switches it off again (rarely needed).
2 · Redesenhar depois que uma janela do sistema é fechada
Permissions.as
// call this from the result handler of any system window that covered the app:
// a permission prompt, a share sheet, a native dialog, a sign-in page
function onSystemWindowClosed():void
{
    BlackScreen.getInstance().fix();     // redraw once, no flicker
}

// example: your own permission flow reports back
myPermissionFlow.onResult = function( granted:Boolean ):void {
    onSystemWindowClosed();
    if ( granted ) startCamera(); else showPermissionHint();
};
3 · Redesenho mais forte ao voltar para o app
Resume.as
import flash.desktop.NativeApplication;
import flash.events.Event;

// back from another activity (share sheet, browser, system settings) and fix()
// is not enough on a given runtime build: the stronger redraw may flicker once
NativeApplication.nativeApplication.addEventListener( Event.ACTIVATE, function( e:Event ):void {
    BlackScreen.getInstance().fixHard();
});

// the first fixHard() replaces the launch background of the window with plain white,
// so the short toggle does not show the splash image

Visão geral da API

BlackScreen.getInstance()Retorna a instância única.
isSupportedVerdadeiro no Android; falso no iOS, macOS e desktop, onde cada chamada não faz nada.
startAuto()Redesenha automaticamente sempre que a janela do app recupera o foco, por exemplo depois que uma janela do sistema é fechada. Chame uma vez na inicialização; uma segunda chamada não tem efeito.
stopAuto()Interrompe o modo automático.
fix()Redesenha a view uma vez, sem cintilação.
fixHard()Redesenho mais forte para casos teimosos, com uma breve cintilação. A primeira chamada substitui o fundo de inicialização da janela por branco liso.

Requisitos

AIR SDK51.x (HARMAN)
AndroidAndroid 6.0 (API 23) ou posterior
PermissõesNenhuma