Oversigt
På nogle Android-enheder kan en apps skærm forblive sort, efter at et systemvindue er lukket oven på den: en tilladelsesforespørgsel, en dialog eller tastaturet på skærmen. Appen kører stadig, men der tegnes intet før næste ændring.
KlugBlackScreen gentegner appens view, så snart et sådant vindue lukkes. Aktiveret én gang ved start virker den automatisk i baggrunden. Til specialtilfælde kan den også udløses direkte.
Funktioner
- Automatisk tilstand: aktivér én gang, den gentegner efter hvert systemvindue
- Manuel gentegning til specialtilfælde
- En blid gentegning uden flimmer og en kraftigere til genstridige tilfælde
- Gør intet på andre platforme, så koden kan blive i en cross-platform-app
Understøttede platforme
Android arm64 · armv7
Kom i gang
Tilføj udvidelsen til din applikationsdescriptor:
<extensions>
<extensionID>com.klug.blackscreen</extensionID>
</extensions>
Kodeeksempler
Tre flows. Hvert kald vender straks tilbage og udfører sit arbejde på Androids UI-tråd; på andre platforme gør kaldene intet.
1 · Aktivér én gang ved start
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 · Gentegn, efter at et systemvindue lukkes
// 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 · Kraftigere gentegning ved retur til appen
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
API-oversigt
| BlackScreen.getInstance() | Returnerer den enkelte instans. |
| isSupported | Sand på Android; falsk på iOS, macOS og desktop, hvor hvert kald ikke gør noget. |
| startAuto() | Gentegner automatisk, hver gang appvinduet får fokus igen, f.eks. efter at et systemvindue lukkes. Kald én gang ved start; et andet kald har ingen effekt. |
| stopAuto() | Stopper den automatiske tilstand. |
| fix() | Gentegner viewet én gang, uden flimmer. |
| fixHard() | Kraftigere gentegning til genstridige tilfælde, med et kort flimmer. Det første kald erstatter vinduets startbaggrund med almindelig hvid. |
Krav
| AIR SDK | 51.x (HARMAN) |
| Android | Android 6.0 (API 23) eller nyere |
| Tilladelser | Ingen |