Score %0 (0 correct0 incorrect77 unanswered)

Q1. Um Funktionen, Komponenten und Berechtigungen zu Ihrer Android-App hinzuzufügen, welche Datei muss bearbeitet werden?

  • AndroidManifest.xml
  • Components.xml
  • AppManifest.xml
  • ComponentManifest.xml

Q2. Welches XML-Attribut sollte verwendet werden, um ein ImageView barrierefrei zu machen?

  • android:talkBack
  • android:labelFor
  • android:hint
  • android:contentDescription

Q3. Sie starten Ihre App, und wenn Sie zu einem neuen Bildschirm navigieren, stürzt sie ab. Welche Maßnahme hilft Ihnen NICHT, das Problem zu diagnostizieren?

  • Setzen von Breakpoints und anschließendes Schritt-für-Schritt-Durchgehen des Codes
  • Verwendung der Profiler-Werkzeuge in Android Studio, um Anomalien in CPU- und Netzwerkauslastung zu erkennen.
  • Hinzufügen eines Thread.sleep() -Aufrufs, bevor Sie die neue Aktivität starten.
  • Überprüfen der Protokolle in Logcat.

Q4. Warum könnten Push-Benachrichtigungen aufhören zu funktionieren?

  • alle diese Antworten
  • Der Gerätetoken wird nicht korrekt an den Push-Anbieter gesendet.
  • Google Play-Dienste sind nicht auf dem Gerät/Emulator installiert.
  • Die Batterieoptimierung ist auf dem Gerät aktiviert.

Q5. Was ist die korrekte Reihe von Komponentenklassen, die benötigt werden, um eine RecyclerView von Elementen zu implementieren, die eine Liste von Widgets vertikal anzeigen?

  • A
    RecycleView
    RecyclerView.Adapter<T extends BaseAdapter>
    RecyclerView.ViewHolder<T extends BaseViewHolder>
    LinearLayoutManager
  • B
    RecycleView
    RecyclerView.Adapter
    RecyclerView.ViewHolder<T extends BaseViewHolder>
    LinearLayoutManager
  • C
    RecycleView
    RecyclerView.Adapter
    RecyclerView.ViewHolder
    LinearLayoutManager
  • D
    RecycleView
    RecyclerView.Adapter<VH extends ViewHolder>
    RecyclerView.ViewHolder
    LinearLayoutManager

Q6. Das Android-System beendet den Prozess, wenn es Speicher freigeben muss. Die Wahrscheinlichkeit, dass das System einen bestimmten Prozess beendet, hängt vom Zustand des Prozesses und der Aktivität zum Zeitpunkt ab. Mit welcher Kombination von Prozess- und Aktivitätszustand ist es am wahrscheinlichsten, dass dieser beendet wird?

  • Prozess: Im Hintergrund; Aktivität: Ist gestoppt
  • Prozess: Im Hintergrund; Aktivität: Ist pausiert
  • Prozess: Im Vordergrund; Aktivität: Ist gestartet
  • Prozess: Im Vordergrund; Aktivität: Ist pausiert

Q7. Du hast eine NextActivity-Klasse erstellt, die auf einen String angewiesen ist, der einige Daten enthält, die im Intent übergeben werden. Welcher Code-Schnipsel ermöglicht es dir, deine Aktivität zu starten?

  • A
    Intent(this, NextActivity::class.java).also { intent ->
        startActivity(intent)
    }
  • B
    Intent(this, NextActivity::class.java).apply {
        put(EXTRA_NEXT, "some data")
    }.also { intent ->
        activityStart(intent)
    }
  • C
    Intent(this, NextActivity::class.java).apply {
        putExtra(EXTRA_NEXT, "some data")
    }.also { intent ->
        startActivity(intent)
    }
  • D
    Intent(this, NextActivity::class.java).apply {
        put(EXTRA_NEXT, "some data")
    }.also { intent ->
        activityStart(intent)
    }

Q8. Du möchtest die Module "about" und "settings" in dein Projekt einbinden. Welche Dateien spiegeln ihre Einbindung genau wider?

  • in build.gradle: include ':app', ':about' ':settings'
  • in settings.gradle: include ':app', ':about' ':settings'
  • in settings.gradle: include ':about', ':settings'
  • in gradle.properties: include ':app', ':about' ':settings'

Q9. Was ist der Nutzen der @VisibleForTesting-Annotation?

  • um anzuzeigen, dass eine Klasse, Methode oder Feld ihre Sichtbarkeit gelockert hat, um den Code testbar zu machen
  • um anzuzeigen, dass eine Klasse, Methode oder Feld nur im Testcode sichtbar ist
  • um anzuzeigen, dass eine Klasse, Methode oder Feld ihre Sichtbarkeit erhöht hat, um den Code weniger testbar zu machen
  • um einen Laufzeitfehler zu werfen, wenn auf eine Klasse, Methode oder ein Feld mit dieser Annotation falsch zugegriffen wird

Q10. Wie würdest du in deiner build.gradle-Datei angeben, dass deine App mindestens API-Level 21 benötigt, um ausgeführt zu werden, aber auf API-Level 28 getestet werden kann?

  • A
      defaultConfig {
        ...
        minApiVersion 21
        targetApiVersion 28
      }
  • B
      defaultConfig {
        ...
        targetSdkVersion 21
        testSdkVersion 28
      }
  • C
      defaultConfig {
        ...
        minSdkVersion 21
        testApiVersion 28
      }
  • D
      defaultConfig {
        ...
      minSdkVersion 21
        targetSdkVersion 28
      }

Q11. Wann wird onActivityResult() einer Aktivität aufgerufen?

  • beim Aufrufen von finish() in der übergeordneten Aktivität
  • beim Versetzen einer App in den Hintergrund durch Wechseln zu einer anderen App
  • Wenn onStop() in der Zielaktivität aufgerufen wird
  • beim Aufrufen von finish() in der Zielaktivität

Referenz

Q12. Du musst ein Ereignis anhand seiner ID von deiner API entfernen. Welcher Code-Schnipsel definiert diesen Request in Retrofit?

  • @DELETE("events) fun deleteEvent(@Path("id") id: Long): Call<Unit>
  • @DELETE("events/{id}") fun deleteEvent(@Path("id") id: Long): Call<Unit>
  • @REMOVE("events/{id}") fun deleteEvent(@Path("id") id: Long): Call<Unit>
  • @DELETE("events/{id}") fun deleteEvent(@Path("id") id: Long): Call<Unit>

Q13. Wann würdest du einen Produktgeschmack in deinem Build-Setup verwenden?

  • wenn die App-Strings in mehreren Sprachen vorhanden sein müssen
  • wenn du verschiedene Versionen deiner App basierend auf der physischen Gerätegröße bereitstellen musst
  • wenn du verschiedene Versionen deiner App basierend auf der Bildschirmdichte des Geräts bereitstellen möchtest
  • Wenn du eine andere Version deiner App mit benutzerdefinierter Konfiguration und Ressourcen bereitstellen möchtest

Q14. Wie würdest du mit dem untenstehenden Fragment auf einen TextView mit der ID text_home in der Layoutdatei einer Fragmentklasse zugreifen?

    private lateinit var textView: TextView
    override fun onCreateView(...): View? {
        val root = inflator.inflator(R>layout.fragment_home, container, false)
        textView = ??
        return root
    }
  • root.getById(R.id.text_home)
  • findViewByID(R.id.text_home)
  • root.findViewById(R.id.text_home)
  • root.find(R.id.text_home)

Q15. Warum verwendet man den AndroidJUnitRunner beim Ausführen von UI-Tests?

Hinweis: AndroidJUnitRunner ermöglicht es uns, JUnit3/4-Tests auf Android-Geräten auszuführen.

  • Der Test-Runner erleichtert das Laden Ihres Testpakets und der App unter Test auf ein Gerät oder Emulator, führt den Test durch und meldet die Ergebnisse.
  • Der Test-Runner erstellt Screenshots von jeder angezeigten Bildschirm, während die Tests ausgeführt werden.
  • Der Test-Runner erleichtert die Parallelisierung von Testklassen, indem er für jede Testklasse bereitstellt.
  • Der Test-Runner erleichtert die Interaktion mit sichtbaren Elementen auf einem Gerät, unabhängig davon, welche Aktivität oder Fragment den Fokus hat.

Q16. Was ermöglicht es dir, den Zustand eines Benutzers ordnungsgemäß wiederherzustellen, wenn eine Aktivität neu gestartet wird?

  • die onSaveInstance()-Methode
  • alle diese Antworten
  • persistenter Speicher
  • ViewModel-Objekte

Referenz

Q17. Wenn der Hauptthread zu lange blockiert ist, zeigt das System den _-Dialog an.

  • Thread reagiert nicht
  • Anwendung pausiert
  • Anwendung reagiert nicht
  • Anwendung blockiert

Q18. Wie würdest du den Wert einer Benutzer-E-Mail aus SharedPreferences abrufen und dabei sicherstellen, dass der zurückgegebene Wert nicht null ist?

  • getPreferances(this).getString(Email,"")
  • getDefaultSharedPrefarances(this).getString(EMAIL,null)
  • getDefaultSharedPreferances(this).getString(EMAIL,"")
  • getPreferances(this).getString(EMAIL,null)

Erklärung: In der Methode "getDefaultSharedPrefarances(this).getString()" wird der zweite Parameter übergeben, damit er zurückgegeben werden kann, falls der Schlüssel nicht existiert. Daher müssen wir einen leeren String übergeben, der zurückgegeben wird, falls der Schlüssel nicht existiert.

Q19. Warum ist es problematisch, Größen auf Android in Pixeln zu definieren?

  • Obwohl sich die Pixeldichte des Bildschirms ändert, hat dies keinen Einfluss auf die Verwendung von Pixeln zur Definition von Größen.
  • Große Geräte haben immer mehr Pixel, daher werden Ihre UI-Elemente beeinflusst, wenn Sie sie mit Pixeln definieren.
  • Die gleiche Anzahl von Pixeln kann unterschiedlichen physischen Größen entsprechen, was das Erscheinungsbild Ihrer UI-Elemente beeinflusst.
  • Unterschiedliche Geräte haben unterschiedliche Vorstellungen davon, was ein Pixel ist, was das Erscheinungsbild Ihrer UI-Elemente beeinflusst.

Referenz

Q20. Du möchtest eine Liste der Geräte abrufen, die mit aktivierter USB-Debugging-Funktion an deinen Computer angeschlossen sind. Welchen Befehl würdest du mit dem Android Debug Bridge ausführen?

  • list devices
  • adb devices
  • list avd
  • dir devices

Q21. Welche drawable-Definition ermöglicht es dir, die unten stehende Form zu erreichen?

  • A
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="oval">
        <stroke
            android:width="4dp"
	    android:color="@android:color/white" />
	<solid android:color="@android:color/black" />
    </shape>
  • B
    <oval xmlns:android="http://schemas.android.com/apk/res/android">
        <stroke android:width="4dp" android:color="@android:color/black"/>
        <solid android:color="@android:color/white"/>
    </oval>
  • C
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="oval">
        <stroke
            android:width="4dp"
            android:color="@android:color/black" />
        <solid android:color="@android:color/white" />
    </shape>
  • D
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="oval">
        <stroke
            android:width="4dp"
            android:color="@android:color/white" />
        <solid android:color="@android:color/white" />
    </shape>

Q22. Um eine kleine Sammlung von Schlüssel-Wert-Daten dauerhaft zu speichern, was solltest du verwenden?

  • externer Dateispeicher
  • SharedPereferences
  • SQLite
  • interner Dateispeicher

Q23. Du möchtest eine Liste von Fotos von einer API abrufen. Welcher Code-Schnipsel definiert eine HTML-GET-Anfrage in Retrofit?

  • @GET("photo/{id}") fun listPhotos(@Path("id") id:Long?) : Call<Photo>
  • @LIST("photo") fun listPhotos() : Call<List<Photo>>
  • @GET("photo") fun listPhotos() : Call<Photo>
  • @GET("photo") fun listPhotos() : Call<List<Photo>>

Q24. Angenommen, die unten stehende Testklasse, welcher Code-Schnipsel wäre eine korrekte Assertion?

  • assertThat(resultAdd).is(2.0)
  • assertNotNull(resultAdd)
  • assertThat(resultAdd).isEqualTo(2.0)
  • assertThat(resultAdd)

Q25. Welches Tag solltest du verwenden, um eine wiederverwendbare Ansichtskomponente einer Layoutdatei hinzuzufügen?

  • <merge/>
  • <include/>
  • <layout/>
  • <add/>

Q26. Du möchtest für Geräte im Querformat und deren Sprache auf Französisch ein anderes Drawable bereitstellen. Welches Verzeichnis ist korrekt benannt?

  • fr-land-drawable
  • drawable-fr-land
  • drawable-french-land
  • french-land-drawable

Q27. Warum musst du die folgende Berechtigung zu deiner App hinzufügen?

android.permission.ACCESS_NETWORK_STATE

  • um den Standort der Geräte zu überwachen, damit keine Netzwerkanfragen gemacht werden, wenn der Benutzer stationär ist
  • um die Berechtigung zur Durchführung von Netzwerkanfragen von deiner App anzufordern
  • um den Netzwerkstatus des Geräts zu überwachen, damit du dem Benutzer ein In-App-Banner anzeigen kannst
  • um den Netzwerkstatus der Geräte zu überwachen, damit keine Netzwerkanfragen gemacht werden, wenn das Netzwerk nicht verfügbar ist

Q28. Welches Bild entspricht am besten dem folgenden LinearLayout?

    <LinearLayout
        android:layout_width="match_parent"
	android:layout_height="match_parent"
	android:orientation="horizontal"
	android:gravity="center">
	<Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button" />
	<Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button" />
        </LinearLayout>
  • A img
  • B img
  • C img
  • D img

Q29. Du möchtest die Standard-Dialer-App auf einem Gerät öffnen. Was ist falsch an diesem Code?

val dialerIntent = Intent()
val et = findViewById(R.id.some_edit_text)
dialerIntent.action = Intent.ACTION_DIAL
dialerIntent.data = Uri.parse("tel:" + et.getText()?.toString())
startActivity(dialerIntent)
  • startActivityWithResult() sollte verwendet werden anstelle von startActivity() bei Verwendung von Intent.ACTION_DIAL.
  • Für Intent.ACTION_DIAL muss die Intent-Option Intent.FLAG_ACTIVITY_NEW_TASK hinzugefügt werden, wenn dieser dialerIntent verwendet wird.
  • Der dialerIntent führt auf Geräten, die Intent.ACTION_DIAL nicht unterstützen, zu einer ActivityNotFoundException.
  • Die Berechtigung android.permission.CALL_PHONE muss zuerst angefordert werden, bevor Intent.ACTION_DIAL verwendet werden kann.

Q30. Wann solltest du Dateien im /assets-Verzeichnis speichern?

  • wenn du Zugriff auf die Originaldateinamen und die Dateihierarchie benötigst
  • wenn du Zugriff auf die Datei mit ihrer resource ID, wie R.assets.filename, benötigst
  • wenn du XML-Dateien hast, die Tween-Animationen definieren
  • wenn du auf die Datei in ihrer Rohform mit Resources.openRawResource() zugreifen musst

Referenz

Q31. Du möchtest Benutzern in deiner App das Aufnehmen von Fotos ermöglichen. Welches ist kein Vorteil der Erstellung eines entsprechenden Intent anstelle des direkten Anforderns der Kameraberechtigung?

  • Benutzer können ihre Lieblings-Foto-Apps zum Aufnehmen von Bildern auswählen.
  • Du musst keine Berechtigungsanforderung in deiner App stellen, um ein Bild aufzunehmen.
  • Du hast die volle Kontrolle über das Benutzererlebnis. Die App, die das Kameraintent handhabt, respektiert deine Designentscheidungen.
  • Du musst die UI nicht gestalten. Die App, die das Kameraintent handhabt, stellt die UI bereit.

Q32. Wann würdest du die Funktion ActivityCompat.shouldShowRequestPermissionRationale() verwenden?

  • wenn ein Benutzer deine App zum ersten Mal öffnet und du die Verwendung einer bestimmten Berechtigung erklären möchtest
  • wenn ein Benutzer zuvor die Anfrage für eine bestimmte Berechtigung abgelehnt hat und "Weitere Informationen" auswählt
  • wenn ein Benutzer zuvor die Anfrage für eine bestimmte Berechtigung abgelehnt hat und du ihre Verwendung erklären möchtest
  • wenn ein Benutzer zuvor die Anfrage für eine bestimmte Berechtigung abgelehnt hat und "Nicht erneut fragen" ausgewählt hat, aber du die Berechtigung für deine App benötigst, um zu funktionieren

Q33. Sie möchten die Analytics-Verfolgung nur in Release-Builds aktivieren. Wie können Sie ein neues Feld in der generierten BuildConfig-Klasse erstellen, um diesen Wert zu speichern?

  • A
buildTypes {
	debug {
		buildConfig 'boolean', 'ENABLE_ANALYTICS', 'false'
	}
	release {
		buildConfig 'boolean', 'ENABLE_ANALYTICS', 'true'
	}
}
  • B
buildTypes {
	debug {
		buildConfig 'String', 'ENABLE_ANALYTICS', 'false'
	}
	release {
		buildConfig 'String', 'ENABLE_ANALYTICS', 'true'
	}
}
  • C
buildTypes {
	debug {
		buildConfigField 'boolean', 'ENABLE_ANALYTICS', 'false'
	}
	release {
		buildConfigField 'boolean', 'ENABLE_ANALYTICS', 'true'
	}
}
  • D
buildTypes {
	debug {
		buildConfigField 'boolean', 'ENABLE_ANALYTICS', 'true'
	}
	release {
		buildConfigField 'boolean', 'ENABLE_ANALYTICS', 'false'
	}
}

Q34. Um die Größe Ihrer APK zu optimieren, welchen Bild-Codec sollten Sie verwenden?

  • JPG
  • PNG
  • MPEG
  • WebP

Referenz

Q35. Sie haben Code erstellt, um einen Netzwerkaufruf durchzuführen, und getestet, dass dies in Ihrer Entwicklungsumgebung funktioniert. Wenn Sie ihn jedoch im Play Store veröffentlichen, schlägt der Netzwerkaufruf fehl. Was wird Ihnen nicht dabei helfen, dieses Problem zu beheben?

  • Überprüfen, ob ProGuard -keepclassmembers zu den betreffenden Netzwerkdatenübertragungsobjekten (DTOs) hinzugefügt wurde
  • Verwenden der Profiler-Tools in Android Studio, um Anomalien in der CPU-, Speicher- und Netzwerkauslastung zu erkennen
  • Überprüfen von Ausnahmen in den Server-Logs oder der Serverkonsole
  • Überprüfen, ob dem Netzwerkdatenübertragungsobjekt @SerizlizedName auf seine Mitgliedseigenschaften angewendet wurde

Q36. Welcher Code-Schnipsel würde das unten angezeigte Layout erreichen?

img

  • A
    <androidx.constraintlayout.widget.ConstraintLayout
	...>

	<TextView
		android:id="@+id/text_dashboard"
		android:layout_width="match_parent"
		android:layout_height="wrap_content"
		android:layout_marginTop="16dp"
		android:padding="8dp"
		android:textAlignment="center"
		android:text="Dashboard"
		app:layout_constraintEnd_toEndOf="parent"
		app:layout_constraintStart_toStartOf="parent"
		app:layout_constraintTop_toTopOf="parent" />

    </androidx.constraintlayout.widget.ConstraintLayout>
  • B
    <androidx.constraintlayout.widget.ConstraintLayout
	...>

	<TextView
		android:id="@+id/text_dashboard"
		android:layout_width="match_parent"
		android:layout_height="wrap_content"
		android:layout_marginStart="8dp"
		android:layout_marginEnd="8dp"
		android:textAlignment="center"
		android:text="Dashboard"
		app:layout_constraintEnd_toEndOf="parent"
		app:layout_constraintStart_toStartOf="parent"
		app:layout_constraintTop_toTopOf="parent" />

    </androidx.constraintlayout.widget.ConstraintLayout>
  • C
    <androidx.constraintlayout.widget.ConstraintLayout
	...>

	<TextView
		android:id="@+id/text_dashboard"
		android:layout_width="match_parent"
		android:layout_height="wrap_content"
		android:layout_marginStart="8dp"
		android:layout_marginTop="16dp"
		android:layout_marginEnd="8dp"
		android:padding="8dp"
		android:textAlignment="center"
		android:text="Dashboard"
		app:layout_constraintEnd_toEndOf="parent"
		app:layout_constraintStart_toStartOf="parent"
		app:layout_constraintTop_toTopOf="parent" />

    </androidx.constraintlayout.widget.ConstraintLayout>
  • D
    <androidx.constraintlayout.widget.ConstraintLayout
	...>

	<TextView
		android:id="@+id/text_dashboard"
		android:layout_width="match_parent"
		android:layout_height="wrap_content"
		android:layout_marginStart="8dp"
		android:layout_marginTop="16dp"
		android:layout_marginEnd="8dp"
		android:padding="8dp"
		android:text="Dashboard"
		app:layout_constraintEnd_toEndOf="parent"
		app:layout_constraintStart_toStartOf="parent"
	/>

</androidx.constraintlayout.widget.ConstraintLayout>

Q37. Welches Quellenset steht Ihnen standardmäßig nicht zur Verfügung, wenn Sie ein neues Projekt in Android Studio erstellen?

  • test
  • androidTest
  • app
  • main

Q38. Welche Definition verhindert, dass andere Apps auf Ihre Activity-Klasse über ein Intent zugreifen?

  • A
	<activity android:name=".ExampleActivity" />
  • B
	<activity android:name=".ExampleActivity">
		<intent-filter>
			<action android:name="android.intent.action.SEND" />
		</intent-filter>
	</activity>
  • C
	<activity android:name=".ExampleActivity">
		<intent-filter>
			<action android:name="android.intent.action.MAIN" />
			<category android:name="android.intent.category.LAUNCHER" />
		</intent-filter>
	</activity>
  • D
	<activity android:name=".ExampleActivity">
		<intent-filter>
			<action android:name="android.intent.action.VIEW" />
		</intent-filter>
	</activity>

Erklärung: Intent-Filter werden verwendet, um Aktivitäten für andere Apps über Intents zugänglich zu machen. Daher müssen wir die Option wählen, die keinen Intent-Filter hat, um sicherzustellen, dass sie nicht über ein Intent zugänglich ist.

Q39. Um den Speicher auf dem Gerät zu erhalten, wie könnten Sie feststellen, dass das Gerät des Benutzers über begrenzte Speicherfähigkeiten verfügt?

  • Verwenden Sie die Methode ActivityManager.isLowRamDevice(), um herauszufinden, ob ein Gerät sich selbst als "niedrigen RAM" definiert.
  • Verwenden Sie die Methode Activity.islowRam(), um herauszufinden, ob ein Gerät sich selbst als "niedrigen RAM" definiert.
  • Verwenden Sie die Methode ConnectivityManager.hasLowMemory(), um herauszufinden, ob ein Gerät sich selbst als "niedrigen RAM" definiert.
  • Führen Sie eine Bild-Download-Anfrage durch und überprüfen Sie die verbleibende Speichernutzung des Geräts.

Q40. Was ist kein guter Weg, um Android-Code wiederzuverwenden?

  • Verwenden Sie ein gemeinsames Gradle-Modul, das von verschiedenen Android-Projekten gemeinsam genutzt wird.
  • Bauen Sie benutzerdefinierte Ansichten oder Fragmente anstelle von Aktivitäten.
  • Bauen Sie Aktivitäten anstelle von Fragmenten.
  • Zerlegen Sie UI-Layouts in gemeinsame Elemente und verwenden Sie <include/>, um sie in anderen Layout-XML-Dateien einzubeziehen.

Q41. Welches Layout ist am besten für große, komplexe Hierarchien geeignet?

  • LinearLayout
  • ConstraintLayout
  • FrameLayout
  • RelativeLayout

Q42. Sie müssen die neueste Version des Android Gradle-Plugins installieren. Welche Datei sollten Sie ändern?

  • root_project_dir/app/build.gradle.
  • root_project_dir/settings.gradle.
  • root_project_dir/build.gradle.
  • root_project_dir/app/gradle.properties.

Referenz

Q43. Warum legen Entwickler oft Initialisierungscode für Apps in die Application-Klasse?

  • Die Application-Klasse wird instanziiert, bevor eine andere Klasse erstellt wird, wenn der Prozess für die Anwendung erstellt wird.
  • Die Application-Klasse wird instanziiert, nachdem Berechtigungsanfragen gestellt wurden, wenn der Prozess für die Anwendung erstellt wird.
  • Die Application-Klasse wird jedes Mal erstellt, wenn eine neue Aktivität gestartet wird, was sie ideal für Initialisierungscode macht.
  • Die Application-Klasse wird jedes Mal erstellt, wenn ein Hintergrunddienst aufgerufen wird, was sie ideal für Initialisierungscode macht.

Referenz

Q44. In welchem Verzeichnis sollten Sie die Startsymbole Ihrer App verwenden?

  • /drawable
  • /icon
  • /mipmap
  • /launcher

Q45. Welche Zeichendefinition ermöglicht es Ihnen, die unten dargestellte Form zu erreichen?

img

  • A
	<shape xmlns:android-"http://schemas.android.com/apk/res/android"
	    android:shape-"oval">
	    <gradient
               android:startColor-"@android:color/white"
               android:endColor-"@android:color/black"
               android:angle-"45"/>
	</shape>
  • B
	<rectangle xmlns:android-"http://schemas.android.com/apk/res/android">
	   <gradient
	      android:startColor-"@android:color/white"
	      android:endColor-"android:color/black"
	      android:angle-"135"/>
	</rectangle>
  • C
	<shape xmlns:android-"http://schemas.android.com/apk/res/android"
	   android:shape-"rectangle">
	   <gradient
	      android:startColor-"@android:color/white"
	      android:endColor-"@android:color/black"
	      android:angle-"135"/>
	</shape>
  • D
	<shape xmlns:android-"http://schemas.android.com/apk/res/android"
	   android:shape-"rectangle">
	   <gradient
	      android:startColor-"@android:color/white"
	      android:endColor-"@android:color/black"
	      android:angle-"98"/>
	</shape>

Q46. Angesichts des folgenden ConstraintLayouts, welche Aussage ist wahr?

img

  • View B ist horizontal nicht eingeschränkt.
  • View C hat zu viele Einschränkungen.
  • View B ist vertikal nicht eingeschränkt.
  • View C ist an den Elternknoten gebunden.

Q47. Angesichts dieses Code-Snippets aus einer build.gradle-Datei, welche Auswahl ist keine mögliche Build-Variante?

android {
    ...
    defaultConfig{...}

    buildTypes{
    debug{...}
    releasae{...}
}

    flavorDimensions "environment"
    productFlavors {
        producation {...}
        staging {...}
    }
}
  • productionDebug.
  • developmentDebug.
  • stagingDebug.
  • stagingRelease.

Referenz

Q48. Wann sollten Sie das Verzeichnis androidTest verwenden, um Ihre Testklassen zu speichern?

  • wenn die Tests nur aus Unit-Tests bestehen.
  • wenn die Anzahl der auszuführenden Tests groß ist (500+).
  • wenn die Tests auf Ihrem lokalen Computer ausgeführt werden müssen.
  • wenn die Tests auf echten oder virtuellen Geräten ausgeführt werden müssen.

Referenz

Q49. Angesichts einer APK namens app-internal-debug.apk, die aus dem Build-Prozess erstellt wurde, welche Aussage ist wahrscheinlich wahr?

  • Diese APK wurde auf einem Entwicklerrechner aus dem Debug-Produktgeschmack erstellt.
  • Diese APK wurde aus dem internalDebug-Produktgeschmack erstellt.
  • Diese APK wurde aus dem Debug-Produktgeschmack und dem internen Build-Typ erstellt.
  • Diese APK wurde aus dem Debug-Build-Typ und dem internen Produktgeschmack erstellt.

Q50. Bei dem Versuch, Ihr Projekt zu erstellen, was könnte der folgende Fehler anzeigen?

Conversion to Dalvik format filed: Unable to execute dex: method ID not in [0, 0xffff]: 65536

  • Sie haben falsche Formatinformationen in Ihrer build.gradle-Datei hinzugefügt.
  • Sie haben mehr als 20 Abhängigkeiten zu Ihrer build.gradle hinzugefügt.
  • Sie haben die Gesamtzahl der Methoden überschritten, die in einer einzigen DEX-Datei referenziert werden können.
  • Sie haben einen NullPointerException in Ihrem Code.

Q51. Welche Aussage in der build.gradle-Datei kennzeichnet korrekt, dass das entsprechende Modul ein Android-Bibliotheksmodul ist?

  • apply plugin: 'com.module.library'
  • apply plugin: 'com.android.library'
  • apply plugin: 'com.module.library'
  • include plugin: 'com.module.library'

Q52. Angesichts der folgenden dimens.xml-Datei, wie würden Sie ein ImageView mit mittlerem Abstand unten definieren?

<?xml version=1.0 encoding="utf-8"?>
<resources>
    <dimen name="spacing_medium">8dp</dimen>
    <dimen name="spacing_large">12dp</dimen>
</resources>
  • A
<ImageView
   android:id=@+id/image_map_pin"
   android:layout_width="wrap_content"
   android:layout_heignt="wrap_content"
   android:src=@drawable/map_pin />
  • B
<ImageView
   android:id=@+id/image_map_pin"
   android:layout_width="wrap_content"
   android:layout_heignt="wrap_content"
   androi:layout_botttom="@dimen/spacing_medium"
   android:src=@drawable/map_pin />
  • C
<ImageView
   android:id=@+id/image_map_pin"
   android:layout_width="wrap_content"
   android:layout_heignt="wrap_content"
   android:layout_marginBottom="@resources/spacing_medium"
   android:src=@drawable/map_pin />
  • D
<ImageView
   android:id=@+id/image_map_pin"
   android:layout_width="wrap_content"
   android:layout_heignt="wrap_content"
   android:layout_marginBottom="@dimen/spacing_medium"
   android:src=@drawable/map_pin />

Q53. Was ist kein Vorteil der Externalisierung von App-Ressourcen wie Bildern und Zeichenfolgen aus einem Code?

  • Es ermöglicht Android, die geeignete Ressource basierend auf der aktuellen Konfiguration zur Laufzeit auszuwählen.
  • Es ermöglicht Ihnen, leistungsstärkere Anwendungen zu haben, weil der Code und die Ressourcen getrennt sind.
  • Es ermöglicht Ihnen, je nach Spracheinstellungen des Benutzers eine unterschiedliche Ul-Erfahrung bereitzustellen.
  • Es ermöglicht Ihnen, je nach Gerätegröße des Benutzers eine unterschiedliche Ul-Erfahrung bereitzustellen.

Q54. Was ist der Hauptzweck von Zeile fünf in diesem Code-Schnipsel?

override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_post_create)

	if (savedInstanceState != null) return

	val fragment = CreatePostFragment()
		supportFragmentManager
		.beginTransaction()
		.add(R.id. fragment_container, fragment)
		.commit()

}
  • sicherstellen, dass die Aktivität endet, wenn savedInstanceState nicht null ist
  • sicherstellen, dass die Aktivität jedes Mal, wenn sie aus einem früheren Zustand wiederhergestellt wird, ein neues Fragment erstellt
  • verhindern, dass zwei Fragmente nebeneinander angezeigt werden, wenn die Aktivität aus einem früheren Zustand wiederhergestellt wird
  • verhindern, dass sich überlappende Fragmente erstellen, wenn die Aktivität aus einem früheren Zustand wiederhergestellt wird

Q55. Welche Komponente ist kein Einstiegspunkt, durch den das System oder ein Benutzer Ihre App betreten kann?

  • Aktivität
  • Inhaltsanbieter
  • Fragment
  • Dienst

Q56. Was sollten Sie verwenden, um eine große, scrollbare Liste von Elementen anzuzeigen?

  • ListView
  • RecyclerView
  • LinearLayout
  • ScrollView

Q57. Sie haben eine AboutActivity-Klasse erstellt, die Details zu Ihrer App anzeigt. Welcher Code-Schnipsel ermöglicht es Ihnen, Ihre Aktivität zu starten?

  • Intent(this, AboutActivity::class).also { intent -> startService(intent)}
  • Intent(this, AboutActivity::class.java).also { intent -> startActivity(intent)}
  • Intent(this, AboutActivity::class).also { intent -> activity(intent)}
  • Intent(this, AboutActivity::class).also { intent -> startActivity(intent)}

Erklärung: Intent(Context packageContext, Class<?> cls) Beachten: Klasse, nicht KClass

Q58. Wofür wird die Datei AndroidManifest.xml verwendet?

  • Es beschreibt die Komponenten der Anwendung
  • Es gibt das Mindestniveau der Android-API an, das die Anwendung erfordert
  • Es erleichtert das Bereitstellen eines eindeutigen Namens für die Anwendung, indem der Paketname angegeben wird
  • Alle oben genannten

Q59. Welches Attribut des Elements <uses-sdk> wird verwendet, um die mindestens erforderliche API-Ebene für das Ausführen der Anwendung anzugeben?

  • android:targetSdkVersion
  • android:minSdkVersion
  • android:maxSdkVersion
  • Keines der oben genannten

Q60. Um Ihren Code in Release-Builds zu reduzieren, welches Tool verwendet Android Studio?

  • R8
  • ProGuard
  • Shrinker
  • D8

Erklärung: Wenn Sie Ihr Projekt mit Android Gradle Plugin 3.4.0 oder höher erstellen, verwendet das Plugin nicht mehr ProGuard zur Durchführung von Kompilierungszeit-Codeoptimierungen. Stattdessen arbeitet das Plugin mit dem R8-Compiler zusammen, um dies zu bewältigen.

Referenz

Q61. Welche Layout-Hierarchie wird wahrscheinlich am schnellsten gezeichnet?

  • %OPTION% A img

  • %OPTION% B img

  • %OPTION% C img

  • %OPTION% D img

Q62. Was ist die derzeit empfohlene Methode, um lang laufende Hintergrundaufgaben zu behandeln?

  • WorkManager
  • AsyncTask
  • IntentService
  • Thread

Referenz

Q63. Sie müssen Ihren Benutzern bestimmte Funktionen Ihrer App auf Abruf oder als sofortige Erlebnisse über Google Play zur Verfügung stellen. Welche Art von Modul sollten Sie erstellen?

  • Bibliotheksmodul
  • Dynamisches Feature-Modul
  • Android-App-Modul
  • Google Cloud-Modul
  1. Referenz
  2. Referenz

Q64. Welcher Ansatz wird nicht empfohlen, um einen nützlichen Offline-Status in Ihrer App bereitzustellen?

  • Daten zwischenspeichern
  • Daten lokal speichern
  • Ausgehende Anforderungen in einer Warteschlange speichern, um sie auszuführen, wenn die Konnektivität verloren geht
  • Benutzer immer darüber informieren, dass die Konnektivität verloren gegangen ist

Referenz

Q65. Wenn Sie möchten, dass Ihr App-Code Informationen zum aktuellen Build überprüft, welche Klasse sollten Sie verwenden?

  • BuildConfig
  • BuildInfo
  • ConfigParams
  • ConfigInfo

Q66. In dem untenstehenden ConstraintLayout würde sich die Schaltfläche nicht auf die Breite des übergeordneten Elements ausdehnen, weil?

    <androidx.constraintlayout.widget.ConstrantLayout
        ...>
	    <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="Button"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"/>

    </androidx.constraintlayout.widget.ConstrantLayout>
  • Die Schaltfläche hat keine Größe
  • Die Schaltfläche ist nicht an das Ende des übergeordneten Containers gebunden
  • Schaltflächen können über ihre Standardgröße hinaus nicht erweitert werden
  • Die Schaltfläche sollte ebenfalls auf eine Höhe von 0dp festgelegt werden

Q67. Was ist kein Anwendungsfall für Leerlaufressourcen in Ihren Espresso-Tests?

  • Verwaltung von Systemdiensten
  • Verarbeitung von Benutzereingaben
  • Laden von Daten aus dem Internet oder einer lokalen Datenquelle
  • Durchführen von Bitmap-Transformationen

Q68. Was ist keine Art von Ressource zur Bereitstellung von Zeichenfolgen für Ihre App?

  • String
  • Text
  • String-Array
  • Mehrzahl

Q69. Was ist nicht im Lebenszyklus der Aktivität?

  • onPause()
  • onResume()
  • onOpen()
  • onStart()

Q70. Sie möchten Benutzern erlauben, in Ihrer App ein Bild aufzunehmen. Welcher Codeausschnitt ist der richtige Ansatz?

  • A
  fun showCamera(view: View) {
      Log.i(TAG, "Show camera button pressed.")
      if (ContextCompat.shouldShowRequestPermissionRationale(thisActivity,
      Manifest.permission.CAMERA) {
        showCameraPreview()
      }
       else {
         requestPermissionLauncher.launch(Manifest.permission.CAMERA)
       }
   }
  • B
  fun showCamera(view: View) {
      Log.i(TAG, "Show camera button pressed.")
      if (ContextCompat.checkSelfPermission(thisActivity,
      Manifest.permission.CAMERA)
      == PackageManager.PERMISSION_GRANTED) {
        showCameraPreview()
      }
      else {
         requestPermissionLauncher.launch(Manifest.permission.CAMERA)
      }
  }
  • C
  fun showCamera(view: View) {
      Log.i(TAG, "Show camera button pressed.")
      showCameraPreview()
  }
  • D
  fun showCamera(view: View) {
      Log.i(TAG, "Show camera button pressed.")
      if (ContextCompat.checkSelfPermission(thisActivity,
      Manifest.permission.CAMERA)
      != PackageManager.PERMISSION_GRANTED) {
         showCameraPreview()
       }
       else {
          requestPermissionLauncher.launch(Manifest.permission.CAMERA)
       }
  }

Q71. Angenommen, Sie haben die folgende Zeichenressource. Welcher Codeausschnitt ist gültig?

<string name="upload_photo_notification">%1$d of %2$d photos uploaded</string>
  • A
val string: String = getString(
   R.string.upload_photo_notification,
   "2",
   "5"
)
  • B
val string: String = getString(
   R.id.upload_photo_notification,
   2,
   5
)
  • C
val string: String = getString(
   R.string.upload_photo_notification,
   2,
   5
)
  • D
val string: String = getString(
   R.id.upload_photo_notification,
   "2",
   "5"
)

Referenz

Q72. Verschiedene Sprachen haben unterschiedliche Regeln für die grammatikalische Übereinstimmung mit der Menge. Um die folgenden beiden Zeichenfolgen in mehreren Sprachen in Ihrer App zu unterstützen, was ist die ideale Ressourcendefinition?

"You have 1 day remaining"
"You have 2 days remaining"
  • A
<string name="trial_days_left_one"> You have %1$d day remaining</string>
<string name="trial_days_left_other">You have %1$d days remaining</string>
  • B
<plurals name="trial days left">
    <plural quantity="one">You have %1$d day remaining</plural>
    <plural quantity="other">You have %1$d days remaining</plural>
</plurals>
  • C
<plurals name="trial_days_left">
    <item quantity="one">You have %1$d day remaining</item>
    <item quantity="other">You have %1$d days remaining</item>
</plurals>
  • D
<string name="trial_days_left">
    <plural quantity="one">You have %1$d day remaining</plural>
    <plural quantity="other">You have &1$d days remaining</plural>
</string>

Q73. Wann würde das Betriebssystem die Methode onTrimMemory() verwenden?

  • wenn die App deinstalliert wird
  • wenn die App im Hintergrund läuft
  • wenn das Gerät im Batterieoptimierungsmodus ist
  • wenn Netzwerkanforderungen im Hauptthread gemacht werden

Referenz

Q74. In Ihrer App haben Sie eine RecyclerView von Elementen. Sie möchten eine andere Konfiguration für Hoch- und Querformatmodi haben. Welcher Codeausschnitt würde es Ihnen am besten ermöglichen, das folgende Layout zu unterstützen?

img

  • A
recyclerView.setLayoutManager(GridLayoutManager(this, 3))
  • B
val coulumnCount = resources.getInteger(R.integer.column_count)
recyclerView.setLayoutManager(GridLayoutManager(this, columnCount))
  • C
recyclerView.setLayoutManager(LinearLayoutManager(this))
  • D
val coulumnCount = resources.getInteger(R.integer.column_count)
recyclerView.setLayoutManager(LinearLayoutManager(this, columnCount))

Q75. Sie müssen ein Ereignis anhand seiner ID von Ihrer API entfernen. Welcher Codeausschnitt definiert diese Anforderung in Retrofit?

  • @DELETE("events) fun deleteEvent(@Path("id") id: Long): Call<Unit>
  • @DELETE("events/{id}") fun deleteEvent(@Path("id") id: Long): Call<Unit>
  • @REMOVE("events/{id}") fun deleteEvent(@Path("id") id: Long): Call<Unit>
  • @DELETE("events/{id}") fun deleteEvent(@Path("id") id: Long): Call<Unit>

Q76. Sie möchten Benutzern erlauben, in Ihrer App Fotos aufzunehmen. Was ist nicht ein Vorteil beim Erstellen eines entsprechenden intent, anstatt die Kameraberechtigung direkt anzufordern?

  • Benutzer können ihre Lieblingsfoto-Apps auswählen, um Fotos aufzunehmen.
  • Sie müssen keine Berechtigungsanfrage in Ihrer App stellen, um ein Foto aufzunehmen.
  • Sie haben die volle Kontrolle über das Benutzererlebnis. Die App, die das Kamera-intent behandelt, respektiert Ihre Designentscheidungen.
  • Sie müssen die UI nicht entwerfen. Die App, die das Kamera-intent behandelt, stellt die UI bereit.

Q77. Was ist die derzeit empfohlene Methode, um lang laufende Hintergrundaufgaben zu behandeln?

  • WorkManager
  • AsyncTask
  • IntentService
  • Thread