ExamGecko
Home Home / Google / Associate Android Developer

Google Associate Android Developer Practice Test - Questions Answers

Question list
Search
Search

List of questions

Search

Related questions











What is a correct part of an Implicit Intent for sharing data implementation?

A.
val sendIntent = Intent(this, UploadService::class.java).apply { putExtra(Intent.EXTRA_TEXT, textMessage) ...
A.
val sendIntent = Intent(this, UploadService::class.java).apply { putExtra(Intent.EXTRA_TEXT, textMessage) ...
Answers
B.
val sendIntent = Intent().apply { type = Intent.ACTION_SEND; ...
B.
val sendIntent = Intent().apply { type = Intent.ACTION_SEND; ...
Answers
C.
val sendIntent = Intent(this, UploadService::class.java).apply { data = Uri.parse(fileUrl) ...
C.
val sendIntent = Intent(this, UploadService::class.java).apply { data = Uri.parse(fileUrl) ...
Answers
D.
val sendIntent = Intent().apply { action = Intent.ACTION_SEND ...
D.
val sendIntent = Intent().apply { action = Intent.ACTION_SEND ...
Answers
Suggested answer: D

Explanation:

Create the text message with a string

val sendIntent = Intent().apply { action = Intent.ACTION_SEND putExtra(Intent.EXTRA_TEXT, textMessage) type = "text/plain" }

Reference: https://developer.android.com/guide/components/fundamentals

By default, the notification's text content is truncated to fit one line. If you want your notification to be longer, for example, to create a larger text area, you can do it in this way:

A.
var builder = NotificationCompat.Builder(this, CHANNEL_ID).setContentText("Much longer text that cannot fit one line...").setStyle(NotificationCompat.BigTextStyle().bigText("Much longer text that cannot fit one line..."))
A.
var builder = NotificationCompat.Builder(this, CHANNEL_ID).setContentText("Much longer text that cannot fit one line...").setStyle(NotificationCompat.BigTextStyle().bigText("Much longer text that cannot fit one line..."))
Answers
B.
.
B.
.
Answers
C.
var builder = NotificationCompat.Builder(this, CHANNEL_ID).setContentText("Much longer text that cannot fit one line...") .setLongText("Much longer text that cannot fit one line..."))
C.
var builder = NotificationCompat.Builder(this, CHANNEL_ID).setContentText("Much longer text that cannot fit one line...") .setLongText("Much longer text that cannot fit one line..."))
Answers
D.
.
D.
.
Answers
E.
var builder = NotificationCompat.Builder(this, CHANNEL_ID).setContentText("Much longer text that cannot fit one line...") .setTheme(android.R.style.Theme_LongText); ...
E.
var builder = NotificationCompat.Builder(this, CHANNEL_ID).setContentText("Much longer text that cannot fit one line...") .setTheme(android.R.style.Theme_LongText); ...
Answers
Suggested answer: A

Explanation:

Reference:

https://developer.android.com/training/notify-user/build-notification

Select correct demonstration of WorkRequest cancellation.

A.
workManager.enqueue(OneTimeWorkRequest.Builder(FooWorker::class.java).build())
A.
workManager.enqueue(OneTimeWorkRequest.Builder(FooWorker::class.java).build())
Answers
B.
val request: WorkRequest = OneTimeWorkRequest.Builder(FooWorker::class.java).build() workManager.enqueue(request)val status = workManager.getWorkInfoByIdLiveData(request.id) status.observe(...)
B.
val request: WorkRequest = OneTimeWorkRequest.Builder(FooWorker::class.java).build() workManager.enqueue(request)val status = workManager.getWorkInfoByIdLiveData(request.id) status.observe(...)
Answers
C.
val request: WorkRequest = OneTimeWorkRequest.Builder(FooWorker::class.java).build() workManager.enqueue(request) workManager.cancelWorkById(request.id)
C.
val request: WorkRequest = OneTimeWorkRequest.Builder(FooWorker::class.java).build() workManager.enqueue(request) workManager.cancelWorkById(request.id)
Answers
D.
val request1: WorkRequest = OneTimeWorkRequest.Builder(FooWorker::class.java).build() val request2: WorkRequest = OneTimeWorkRequest.Builder(BarWorker::class.java).build() val request3: WorkRequest = OneTimeWorkRequest.Builder(BazWorker::class.java).build() workManager.beginWith(request1, request2).then(request3).enqueue()
D.
val request1: WorkRequest = OneTimeWorkRequest.Builder(FooWorker::class.java).build() val request2: WorkRequest = OneTimeWorkRequest.Builder(BarWorker::class.java).build() val request3: WorkRequest = OneTimeWorkRequest.Builder(BazWorker::class.java).build() workManager.beginWith(request1, request2).then(request3).enqueue()
Answers
E.
val request: WorkRequest = OneTimeWorkRequest.Builder(FooWorker::class.java).build() workManager.enqueue(request) workManager.cancelWork(request)
E.
val request: WorkRequest = OneTimeWorkRequest.Builder(FooWorker::class.java).build() workManager.enqueue(request) workManager.cancelWork(request)
Answers
Suggested answer: C

Explanation:

Videos:

Working with WorkManager, from the 2018 Android Dev Summit

WorkManager: Beyond the basics, from the 2019 Android Dev Summit

Reference: https://developer.android.com/reference/androidx/work/WorkManager?hl=en

In general, you should send an AccessibilityEvent whenever the content of your custom view changes. For example, if you are implementing a custom slider bar that allows a user to select a numeric value by pressing the left or right arrows, your custom view should emit an event of type TYPE_VIEW_TEXT_CHANGED whenever the slider value changes. Which one of the following sample codes demonstrates the use of the sendAccessibilityEvent() method to report this event.

A.
override fun dispatchPopulateAccessibilityEvent(event: AccessibilityEvent): Boolean { return super.dispatchPopulateAccessibilityEvent(event).let{ completed -> if (text?.isNotEmpty() == true) { event.text.add(text) true } else { completed}}}
A.
override fun dispatchPopulateAccessibilityEvent(event: AccessibilityEvent): Boolean { return super.dispatchPopulateAccessibilityEvent(event).let{ completed -> if (text?.isNotEmpty() == true) { event.text.add(text) true } else { completed}}}
Answers
B.
override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean { return when(keyCode) {KeyEvent.KEYCODE_DPAD_LEFT -> { currentValue--sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED) true}
B.
override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean { return when(keyCode) {KeyEvent.KEYCODE_DPAD_LEFT -> { currentValue--sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED) true}
Answers
C.
.}}
C.
.}}
Answers
D.
override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean { return when(keyCode) {KeyEvent.KEYCODE_ENTER -> { currentValue--sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CONTEXT_CLICKED) true}
D.
override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean { return when(keyCode) {KeyEvent.KEYCODE_ENTER -> { currentValue--sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CONTEXT_CLICKED) true}
Answers
E.
.}}
E.
.}}
Answers
Suggested answer: B

Explanation:

Reference: https://developer.android.com/guide/topics/ui/accessibility/custom-views

The easiest way of adding menu items (to specify the options menu for an activity) is inflating an XML file into the Menu via MenuInflater. With menu_main.xml we can do it in this way:

A.
override fun onCreateOptionsMenu(menu: Menu): Boolean { menuInflater.inflate(R.menu.menu_main, menu) return true}
A.
override fun onCreateOptionsMenu(menu: Menu): Boolean { menuInflater.inflate(R.menu.menu_main, menu) return true}
Answers
B.
override fun onOptionsItemSelected(item: MenuItem): Boolean { menuInflater.inflate(R.menu.menu_main, menu) return super.onOptionsItemSelected(item) }
B.
override fun onOptionsItemSelected(item: MenuItem): Boolean { menuInflater.inflate(R.menu.menu_main, menu) return super.onOptionsItemSelected(item) }
Answers
C.
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.menu.menu_main) }
C.
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.menu.menu_main) }
Answers
Suggested answer: A

Explanation:

Reference: https://developer.android.com/guide/topics/ui/accessibility/custom-views

Android Tests. You can use the childSelector() method to nest multiple UiSelector instances. For example, the following code example shows how your test might specify a search to find the first ListView in the currently displayed UI, then search within that ListView to find a UI element with the text property Apps. What is the correct sample?

A.
val appItem: UiObject = device.findObject(UiSelector().className(ListView.class).instance(1).childSelector(UiSelector().text("Apps")))
A.
val appItem: UiObject = device.findObject(UiSelector().className(ListView.class).instance(1).childSelector(UiSelector().text("Apps")))
Answers
B.
val appItem: UiObject = device.findObject(UiSelector().className("android.widget.ListView").instance(0).childSelector(UiSelector().text("Apps")))
B.
val appItem: UiObject = device.findObject(UiSelector().className("android.widget.ListView").instance(0).childSelector(UiSelector().text("Apps")))
Answers
C.
val appItem: UiObject = device.findObject(UiSelector().className("android.widget.ListView").instance(UiSelector().text("Apps")))
C.
val appItem: UiObject = device.findObject(UiSelector().className("android.widget.ListView").instance(UiSelector().text("Apps")))
Answers
Suggested answer: B

The following code snippet shows an example of an Espresso test:

A.
@Rule fun greeterSaysHello() {onView(withId(R.id.name_field)).do(typeText("Steve")) onView(withId(R.id.greet_button)).do(click())onView(withText("Hello Steve!")).check(matches(isDisplayed())) }
A.
@Rule fun greeterSaysHello() {onView(withId(R.id.name_field)).do(typeText("Steve")) onView(withId(R.id.greet_button)).do(click())onView(withText("Hello Steve!")).check(matches(isDisplayed())) }
Answers
B.
@Test fun greeterSaysHello() {onView(withId(R.id.name_field)).perform(typeText("Steve")) onView(withId(R.id.greet_button)).perform(click())onView(withText("Hello Steve!")).check(matches(isDisplayed())) }
B.
@Test fun greeterSaysHello() {onView(withId(R.id.name_field)).perform(typeText("Steve")) onView(withId(R.id.greet_button)).perform(click())onView(withText("Hello Steve!")).check(matches(isDisplayed())) }
Answers
C.
@Test fun greeterSaysHello() {onView(withId(R.id.name_field)).do(typeText("Steve")) onView(withId(R.id.greet_button)).do(click())onView(withText("Hello Steve!")).compare(matches(isDisplayed())) }
C.
@Test fun greeterSaysHello() {onView(withId(R.id.name_field)).do(typeText("Steve")) onView(withId(R.id.greet_button)).do(click())onView(withText("Hello Steve!")).compare(matches(isDisplayed())) }
Answers
Suggested answer: B

As an example. In an Activity we have our TimerViewModel object (extended ViewModel), named mTimerViewModel. mTimerViewModel.timer method returns a

LiveData<Long> value. What can be a correct way to set an observer to change UI in case if data was changed?

A.
mTimerViewModel!!.timer.value.toString().observe(Observer { aLong -> callAnyChangeUIMethodHere(aLong!!) })
A.
mTimerViewModel!!.timer.value.toString().observe(Observer { aLong -> callAnyChangeUIMethodHere(aLong!!) })
Answers
B.
mTimerViewModel!!.timer.observe(this, Observer { aLong -> callAnyChangeUIMethodHere(aLong!!) })
B.
mTimerViewModel!!.timer.observe(this, Observer { aLong -> callAnyChangeUIMethodHere(aLong!!) })
Answers
C.
mTimerViewModel.observe(Observer { aLong -> callAnyChangeUIMethodHere(aLong!!) })
C.
mTimerViewModel.observe(Observer { aLong -> callAnyChangeUIMethodHere(aLong!!) })
Answers
Suggested answer: B

LiveData.postValue() and LiveData.setValue() methods have some differences. So if you have a following code executed in the main thread:

liveData.postValue("a"); liveData.setValue("b");

What will be the correct statement?

A.
The value "b" would be set at first and later the main thread would override it with the value "a".
A.
The value "b" would be set at first and later the main thread would override it with the value "a".
Answers
B.
The value "a" would be set at first and later the main thread would override it with the value "b".
B.
The value "a" would be set at first and later the main thread would override it with the value "b".
Answers
C.
The value "b" would be set at first and would not be overridden with the value "a".
C.
The value "b" would be set at first and would not be overridden with the value "a".
Answers
D.
The value "a" would be set at first and would not be overridden with the value "b".
D.
The value "a" would be set at first and would not be overridden with the value "b".
Answers
Suggested answer: B

In our TeaViewModel class, that extends ViewModel, we have such prorerty: val tea: LiveData<Tea>

An observer in our Activity (type of mViewModel variable in example is TeaViewModel) is set in this way:

mViewModel!!.tea.observe(this, Observer { tea: Tea? -> displayTea(tea) })

What will be a correct displayTea method definition?

A.
private fun displayTea()
A.
private fun displayTea()
Answers
B.
private fun displayTea(tea: Tea?)
B.
private fun displayTea(tea: Tea?)
Answers
C.
private fun displayTea(tea: LiveData?<Tea>)
C.
private fun displayTea(tea: LiveData?<Tea>)
Answers
D.
private fun displayTea(tea: LiveData?<T>)
D.
private fun displayTea(tea: LiveData?<T>)
Answers
Suggested answer: B
Total 128 questions
Go to page: of 13