Heute zerlegen wir das Android-Quiz von der Konferenz für mobile Entwickler Mobius 2018 Moskau.
Das Format war ziemlich normal: 15 Fragen mit 4 möglichen Antworten. Zeitlimit von 30 Sekunden für jede Frage.

Lass uns gehen!
Frage 1
ErklärungenJeder weiß, dass jede neue Version von Android einen Codenamen für Süßigkeiten erhält und diese in alphabetischer Reihenfolge (Cupcake, Donut, Eclair usw.) zugewiesen werden.
Zunächst planten die Entwickler jedoch, die Versionen mit fiktiven Roboternamen zu benennen. Daher hießen die ersten Versionen von Android Astra Boy und Bender . Dies waren interne Releases vor der Veröffentlichung der unbenannten Version 1.0. Aus bestimmten Gründen hat sich der Vektor jedoch geändert und Version 1.1 wurde beschlossen, Petit Four zu nennen. Dies war die erste süße Version von Android. Und bereits ab der nächsten Version (Cupcake 1.5) wurden die Namen in alphabetischer Reihenfolge vergeben.
Quelle
Frage 2
ErklärungenMit der Veröffentlichung von API 23 (Marshmallow) führte Android das neue Konzept der Laufzeitberechtigungen ein . Diese Funktion sollte den Benutzern Transparenz für die der Anwendung erteilten Berechtigungen verleihen. Vor der Veröffentlichung von „Marshmallows“ wurden zum Zeitpunkt der Anwendungsinstallation Berechtigungen erteilt.
Quelle
Beachten Sie, dass Android mehr als 100 eindeutige Berechtigungen enthält.
Frage 3
Erklärungen
Measure () - wird aufgerufen, um die Größenanforderungen der Ansicht und aller untergeordneten Elemente zu bestimmen.
onMeasure () - Wird von Measure () aufgerufen, um die eigentliche Größe der Ansicht zu ändern .
onLayout () - wird aufgerufen, um ein Element in einem Container zu platzieren
onDraw () - wird aufgerufen, um View-Inhalte zu rendern.
Weitere Informationen zum Rendern von View finden Sie hier .
Frage 4
ErklärungenDas SDK enthält keine isUserSmell () -Methode. Vielleicht in Zukunft mit dem Aufkommen geeigneter Sensoren an Geräten ...
Mal sehen, was die restlichen Methoden bewirken:
isUserMonkey () - Mit dieser Methode soll überprüft werden, ob der Benutzer ein Test im Rahmen des automatisierten Affentests ist.
isUserAGoat () - Überprüft ab API 21, ob die Goat Simulator GoatZ-Anwendung installiert ist. In den folgenden Versionen gibt die Methode immer false zurück. Befindet sich in der Klasse android.os.UserManager
.
isFinalCountdown () - Die Methode öffnet den Clip „The Final Countdown“ der Europa-Band. Es wurde zu API 26 android.widget.Chronometer
. Befindet sich in der Klasse android.widget.Chronometer
.
Frage 5
Die Antwort private static final int mobius = 2018
ErklärungenDiese getestete Kenntnis des Schlüsselworts const
, mit dem compile time constants
deklariert compile time constants
. In der Java-Welt entspricht dies static final
Modifikatoren.
Frage 6
ErklärungenWährend Entwickler xhdpi und mdpi gehört haben, sieht es bei tvdpi anders aus . Es hat nicht an Popularität gewonnen, und daher gibt es nur sehr wenige Geräte in der Kategorie tvdpi , aber sie waren es. Das bekannteste davon ist Nexus 7 (2012).
Quelle
Beachten Sie, dass tvdpi einen Koeffizienten von 1,3 relativ zu mdpi hat.
Frage 7
ErklärungenAAPT (Android Asset Packaging Tool) - Ein Android-Tool zum Erstellen von .APK-Dateien.
Bedingt kann die Arbeit dieses Dienstprogramms in zwei Stufen unterteilt werden:
- Zusammenstellung. In dieser Phase werden Ressourcen vorbereitet: Die Klasse R wird generiert, XML-Ressourcen werden in ein Binärformat übersetzt, PNG-Verarbeitung usw.
- Verpackung (Verknüpfung). Alle in der Kompilierungsphase erstellten Zwischendateien werden in die APK gepackt.
Wie für die verbleibenden Antwortoptionen:
- Die Verschleierung des Codes erfolgt normalerweise durch Proguard.
- Java-Bytecode ist das Ergebnis des Java-Compilers, der den Quellcode in Java-Bytecode übersetzt.
- Dalvik-Bytecode ist das Ergebnis des Dalvik-Compilers (DX, D8), der .class (Java-Bytecode) in .dex (Dalvik-Bytecode) übersetzt. Der Quellcode im Dalvik-Bytecode wird nicht direkt gesendet.
Der Prozess zum Erstellen einer Android-Anwendung wird in der Dokumentation beschrieben .
Frage 8
ErklärungenVon den oben genannten wird RIGHT OUTER JOIN nicht unterstützt.
Quelle
Frage 9
ErklärungenName | Dichte |
---|
ldpi | 0,75 |
mdpi | 1 |
tvdpi | 1.3 |
hdpi | 1.5 |
xhdpi | 2 |
xxhdpi | 3 und 2.6 |
xxxhdpi | 4 und 3.5 |
Frage 10
ErklärungenART (Android RunTime) ist die neue DEX-Bytecode-Laufzeit, die Dalvik ersetzt. Der wichtigste Unterschied zwischen Dalvik und ART besteht darin, dass Dalvik auf der JIT - Kompilierung ( Just-in-Time ) basiert, während ART auf AOT ( Ahead-of-Time ) basiert. Im Allgemeinen bedeutet dies, dass Dalvik bei jeder Ausführung der Anwendung Dalvik-Bytecode in den Maschinencode übersetzt. ART führt dies einmal während der Installation der Anwendung aus und speichert das Ergebnis im Gerätespeicher. Dies führt zu einem schnelleren Start und einer schnelleren Ausführung von Anwendungen auf ART im Vergleich zu Dalvik, erhöht jedoch auch die Installationszeit der Anwendung. Darüber hinaus führte ART eine GC-Optimierung durch und fügte eine Reihe von Funktionen hinzu, um die Anwendungsentwicklung und das Debugging zu verbessern.
KUNST und Dalvik

Darüber hinaus ist anzumerken, dass ART auch einen JIT-Compiler enthält, der AOT ergänzt. Lesen Sie hier mehr darüber.
Frage 11
ErklärungenKISS (halte es einfach, dumm) - mach es nicht komplizierter!
DRY (Wiederhole dich nicht), DIE (Duplication Is Evil) - wiederhole es nicht!
WTF (die Menge an „Chazan“ pro Sekunde) ist eine Maßeinheit für die Qualität des Codes für eine Überprüfung.
YAGNI (Du wirst es nicht brauchen) - Du wirst es nicht brauchen!
Frage 12
Die Antwort Application Not Responding
ErklärungenANR (Application Not Responding) - Ein Problem, das auftritt, wenn der Hauptthread der Anwendung keine Benutzerereignisse verarbeiten und die Benutzeroberfläche nicht neu zeichnen kann.
In Android wird die Reaktionsfähigkeit einer Anwendung von den Systemdiensten ActivityManager
und WindowManager
überwacht. Wenn eine der folgenden Bedingungen erfüllt ist:
- Es erfolgt keine Reaktion auf Eingabeereignisse (Berührungs- und Tastendruckereignisse).
- BroadcastReceiver wird nicht innerhalb von 10 Sekunden abgeschlossen.
Anschließend benachrichtigt das System den Benutzer über das Problem, indem der entsprechende ANR- Dialog angezeigt wird.
Frage 13
ErklärungenMeasureSpec wurde entwickelt, um Größenanforderungen von übergeordneten auf untergeordnete Ansichtskomponenten zu übertragen. Diese Anforderungen werden in zwei Dimensionen zusammengestellt: Breite und Höhe. Die Werte für jede der Messungen sind zusammengesetzt: Der erste Teil enthält Informationen zum verfügbaren Speicherplatz (in Pixel), der zweite Teil enthält Einschränkungen für die Verwendung des verfügbaren Speicherplatzes. Diese Einschränkungen können Folgendes umfassen:
MeasureSpec.UNSPECIFIED - Keine Einschränkungen, die Ansicht kann jede benötigte Größe annehmen.
MeasureSpec.EXACTLY - genaue Größen sind definiert, diese Ränder werden angezeigt .
MeasureSpec.AT_MOST - Bestimmte maximale Größen. Die Ansicht kann beliebig groß sein, jedoch bis zur angegebenen Größe.
Frage 14
Erklärungen
Linux-Kernel (Linux-Kernel) - Diese Schicht stellt die Funktionsweise des Systems bereit und ist für Sicherheit, Speicherverwaltung, Prozesse sowie einen Netzwerkstapel und ein Treibermodell (Anzeigetreiber, Kameratreiber und andere Treiber) verantwortlich.
Bibliotheken (Bibliotheken) ist eine Zwischenschicht von Software, die grundlegende Funktionen für Anwendungen bereitstellt, z. B. Unterstützung für Dateiformate, Codierungs- und Decodierungsinformationen (z. B. Codecs), Rendern von Grafiken und vieles mehr (Surface Manager, Media Framework, SQLite und andere).
Android Runtime - befindet sich auf derselben Ebene wie Libraries. Die Schlüsselkomponenten hier sind Dalvik VM und eine Reihe von Kernbibliotheken (Kernbibliotheken).
Application Framework - Anwendungsframework-Ebene. Über Anwendungsframeworks erhalten Entwickler Zugriff auf die APIs, die unterhalb der Ebene liegen. Dazu gehören: ActivityManager, Paketmanager, Fenstermanager usw.
Anwendungen - Die Ebene der Anwendungen, die sowohl grundlegend (auf dem Betriebssystem vorinstalliert: Browser, Kalender, Kontakte usw.) als auch vom Benutzer installiert sind.
Beachten Sie, dass die Autoren des Quiz alte Schule sind, weil In der offiziellen Dokumentation werden die Ebenen auf andere Weise hervorgehoben: source.android.com/devices/architecture .
Frage 15
Erklärungengehe zu einer anderen Anweisung.
invokeinterface - wird zum Aufrufen von Schnittstellenmethoden verwendet.
invokestatic - wird zum Aufrufen statischer Methoden verwendet.
Beschreibung anderer Anweisungen .