Yleiskatsaus
Joillakin Android-laitteilla sovelluksen näyttö voi jäädä mustaksi sen päälle avautuneen järjestelmäikkunan sulkeuduttua: lupakysely, dialogi tai näytön näppäimistö. Sovellus on yhä käynnissä, mutta mitään ei piirretä ennen seuraavaa muutosta.
KlugBlackScreen piirtää sovelluksen näkymän uudelleen, heti kun tällainen ikkuna sulkeutuu. Kerran käynnistyksessä käyttöön otettuna se toimii automaattisesti taustalla. Erikoistapauksia varten sen voi myös käynnistää suoraan.
Ominaisuudet
- Automaattinen tila: ota käyttöön kerran, se piirtää uudelleen jokaisen järjestelmäikkunan jälkeen
- Manuaalinen uudelleenpiirto erikoistapauksiin
- Hellävarainen uudelleenpiirto ilman välkyntää ja voimakkaampi sitkeitä tapauksia varten
- Ei tee mitään muilla alustoilla, joten koodi voi pysyä monialustaisessa sovelluksessa
Tuetut alustat
Aloitus
Lisää laajennus sovelluksesi descriptoriin:
<extensions>
<extensionID>com.klug.blackscreen</extensionID>
</extensions>
Koodiesimerkit
Kolme esimerkkiä. Jokainen kutsu palaa heti ja tekee työnsä Androidin UI-säikeessä; muilla alustoilla kutsut eivät tee mitään.
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).
// 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(); };
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
Rajapintayleiskatsaus
| BlackScreen.getInstance() | Palauttaa yksittäisen instanssin. |
| isSupported | True Androidilla; false iOS:llä, macOS:llä ja työpöydällä, joissa jokainen kutsu ei tee mitään. |
| startAuto() | Piirtää automaattisesti uudelleen aina, kun sovellusikkuna saa fokuksen takaisin, esimerkiksi järjestelmäikkunan sulkeutumisen jälkeen. Kutsu kerran käynnistyksessä; toinen kutsu ei vaikuta mihinkään. |
| stopAuto() | Pysäyttää automaattisen tilan. |
| fix() | Piirtää näkymän kerran uudelleen ilman välkyntää. |
| fixHard() | Voimakkaampi uudelleenpiirto sitkeitä tapauksia varten, lyhyen välkynnän kera. Ensimmäinen kutsu korvaa ikkunan käynnistystaustan pelkällä valkoisella. |
Vaatimukset
| AIR SDK | 51.x (HARMAN) |
| Android | Android 6.0 (API 23) tai uudempi |
| Oikeudet | Ei mitään |