← Alle Erweiterungen

Native Erweiterung

KlugBlackScreen

com.klug.blackscreen

KEIN APM NÖTIG. Herunterladen und loslegen. Einfacher geht es nicht.

Stellt unter Android die Anzeige wieder her, nachdem ein Systemfenster, etwa eine Berechtigungsabfrage, ein Dialog oder die Tastatur, geschlossen wurde.

Android In Entwicklung

Überblick

Auf manchen Android-Geräten kann der Bildschirm einer App schwarz bleiben, nachdem ein Systemfenster darüber geschlossen wurde: eine Berechtigungsabfrage, ein Dialog oder die Bildschirmtastatur. Die App läuft weiter, aber bis zur nächsten Änderung wird nichts gezeichnet.

KlugBlackScreen zeichnet die Ansicht der App neu, sobald ein solches Fenster schließt. Einmal beim Start eingeschaltet, arbeitet es automatisch im Hintergrund. Für Sonderfälle lässt es sich auch direkt auslösen.

Funktionen

  • Automatischer Modus: einmal einschalten, es zeichnet nach jedem Systemfenster neu
  • Manuelles Neuzeichnen für Sonderfälle
  • Ein sanftes Neuzeichnen ohne Flackern und ein stärkeres für hartnäckige Fälle
  • Tut auf anderen Plattformen nichts, sodass der Code in einer plattformübergreifenden App bleiben kann

Unterstützte Plattformen

Android arm64 · armv7

Erste Schritte

Fügen Sie die Erweiterung Ihrem Application Descriptor hinzu:

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

Codebeispiele

Drei Abläufe. Jeder Aufruf kehrt sofort zurück und erledigt seine Arbeit im Android-UI-Thread; auf anderen Plattformen tun die Aufrufe nichts.

1 · Einmal beim Start einschalten
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 · Nach dem Schließen eines Systemfensters neu zeichnen
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 · Stärkeres Neuzeichnen bei der Rückkehr in die 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

API-Übersicht

BlackScreen.getInstance()Gibt die einzige Instanz zurück.
isSupportedTrue unter Android; false unter iOS, macOS und Desktop, wo jeder Aufruf nichts tut.
startAuto()Zeichnet automatisch neu, sobald das App-Fenster den Fokus zurückerhält, zum Beispiel nachdem ein Systemfenster geschlossen wurde. Einmal beim Start aufrufen; ein zweiter Aufruf hat keine Wirkung.
stopAuto()Beendet den automatischen Modus.
fix()Zeichnet die Ansicht einmal ohne Flackern neu.
fixHard()Stärkeres Neuzeichnen für hartnäckige Fälle, mit kurzem Flackern. Der erste Aufruf ersetzt den Start-Hintergrund des Fensters durch schlichtes Weiß.

Voraussetzungen

AIR SDK51.x (HARMAN)
AndroidAndroid 6.0 (API 23) oder neuer
BerechtigungenKeine