Exit demo ASSOCIATE-ANDROID-DEVELOPER Associate Android Developer (Kotlin and Java) PDF format · free preview

Google ASSOCIATE-ANDROID-DEVELOPER - Questions & Answers

Free preview · every answer includes a full explanation

Product page: https://prepkeys.com/associate-android-developer.html

Question 1
Single choice

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)
...

B.

val sendIntent = Intent().apply {
type = Intent.ACTION_SEND;
...

C.

val sendIntent = Intent(this, UploadService::class.java).apply {

data = Uri.parse(fileUrl)
...

D.

val sendIntent = Intent().apply {
action = Intent.ACTION_SEND
...

Question 2
Single choice

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..."))
...

B.

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...")
.setTheme(android.R.style.Theme_LongText);
...

Question 3
Single choice

Select correct demonstration of WorkRequest cancellation.

A.

workManager.enqueue(OneTimeWorkRequest.Builder(FooWorker::class.java).build

())

B.

val request: WorkRequest = OneTimeWorkRequest.Builder

(FooWorker::class.java).build()
workManager.enqueue(request)
val status = workManager.getWorkInfoByIdLiveData(request.id)
status.observe(...)

C.

val request: WorkRequest = OneTimeWorkRequest.Builder

(FooWorker::class.java).build()
workManager.enqueue(request)
workManager.cancelWorkById(request.id)

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()

E.

val request: WorkRequest = OneTimeWorkRequest.Builder

(FooWorker::class.java).build()
workManager.enqueue(request)
workManager.cancelWork(request)

Question 4
Single choice

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
}
}
}

B.

override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean {

return when(keyCode) {
KeyEvent.KEYCODE_DPAD_LEFT -> {
currentValue--
sendAccessibilityEvent
(AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED)
true
}
...
}
}

C.

override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean {

return when(keyCode) {
KeyEvent.KEYCODE_ENTER -> {
currentValue--
sendAccessibilityEvent
(AccessibilityEvent.TYPE_VIEW_CONTEXT_CLICKED)
true
}
...
}
}

Question 5
Single choice

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
}

B.

override fun onOptionsItemSelected(item: MenuItem): Boolean {

menuInflater.inflate(R.menu.menu_main, menu)
return super.onOptionsItemSelected(item)
}

C.

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)
setContentView(R.menu.menu_main)
}

Question 6
Single choice

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")
)
)

B.

val appItem: UiObject = device.findObject(

UiSelector().className("android.widget.ListView")
.instance(0)
.childSelector(
UiSelector().text("Apps")
)
)

C.

val appItem: UiObject = device.findObject(

UiSelector().className("android.widget.ListView")
.instance(
UiSelector().text("Apps")
)
)

Question 7
Single choice

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()))
}

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()))
}

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()))
}

Question 8
Single choice

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!!) })

B.

mTimerViewModel!!.timer.observe

(this, Observer { aLong -> callAnyChangeUIMethodHere(aLong!!) })

C.

mTimerViewModel.observe

(Observer { aLong -> callAnyChangeUIMethodHere(aLong!!) })

Question 9
Single choice

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".

B.

The value "a" would be set at first and later the main thread would override it with the value "b".

C.

The value "b" would be set at first and would not be overridden with the value "a".

D.

The value "a" would be set at first and would not be overridden with the value "b".

Question 10
Single choice

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()

B.

private fun displayTea(tea: Tea?)

C.

private fun displayTea(tea: LiveData?<Tea>)

D.

private fun displayTea(tea: LiveData?<T>)

Showing 10 of 128 questions · Unlock the full set