Associate Android Developer v1.0 (Associate Android Developer)

Page:    1 / 8   
Total 116 questions

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

  • A. @Rule public void 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 public void 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 public void 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())); }


Answer : B

As an example. In an Activity we have our TimerViewModel object (extended ViewModel), named mTimerViewModel. mTimerViewModel.getTimer
() 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.getTimer().getValue().toString().observe(new Observer<Long>() { @Override public void onChanged(Long aLong) { callAnyChangeUIMethodHere(aLong) } });
  • B. mTimerViewModel.getTimer().observe(this, new Observer<Long>() { @Override public void onChanged(Long aLong) { callAnyChangeUIMethodHere(aLong) } });
  • C. mTimerViewModel.observe(new Observer<Long>() { @Override public void onChanged(Long aLong) { callAnyChangeUIMethodHere(aLong) } });


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


Answer : B

In our TeaViewModel class, that extends ViewModel, we have such method: public LiveData<Tea> getTea() { return mTea;
}
An observer in our Activity (type of mViewModel variable in example is TeaViewModel) is set in this way: mViewModel.getTea().observe(this, this::displayTea);
What will be a correct displayTea method definition?

  • A. private void displayTea()
  • B. private void displayTea(Tea tea)
  • C. private void displayTea(LiveData<Tea>)
  • D. private void displayTea(LiveData<T>)


Answer : B

For example, our preferences.xml file was added by addPreferencesFromResource(R.xml.preferences). Our preferences.xml file contains such item:
<SwitchPreference
android:id="@+id/notification"
android:key="@string/pref_notification_key"
android:title="@string/pref_notification_title"
android:summary="@string/pref_notification_summary"
android:defaultValue="@bool/pref_notification_default_value"
app:iconSpaceReserved="false"/>
In our Fragment, we can dynamically get current notification preference value in this way:

  • A. boolean isNotificationOn = PreferenceManager.getDefaultSharedPreferences(getContext()).getBoolean( getContext().getString(R.string.pref_notification_key), getContext().getResources().getBoolean(R.bool.pref_notification_default_value) );
  • B. boolean isNotificationOn = PreferenceManager.getSharedPreferences(getContext()).getBoolean( getContext().getString(R.string.pref_notification_default_value), getContext().getString(R.string.pref_notification_key) );
  • C. boolean isNotificationOn = PreferenceManager.getSharedPreferences(getContext()).getBoolean( getContext().getResources().getBoolean(R.bool.pref_notification_default_value), getContext().getString(R.string.pref_notification_key) );


Answer : A

For example, our preferences.xml file was added by addPreferencesFromResource(R.xml.preferences). Our preferences.xml file contains such item:
<ListPreference
android:id="@+id/order_by"
android:key="@string/pref_sort_key"
android:title="@string/pref_sort_title"
android:summary="@string/pref_sort_summary"
android:dialogTitle="@string/pref_sort_dialog_title"
android:entries="@array/sort_oder"
android:entryValues="@array/sort_oder_value"
android:defaultValue="@string/pref_default_sort_value"
app:iconSpaceReserved="false" />
In our Fragment, we can dynamically get current notification preference value in this way:

  • A. String sortBy = PreferenceManager.getDefaultSharedPreferences(getContext()).getString( getContext().getString(R.string.pref_sort_key), getContext().getResources().getBoolean(R.bool.pref_default_sort_value) );
  • B. String sortBy = PreferenceManager.getSharedPreferences(getContext()).getString( getContext().getString(R.string.pref_default_sort_value), getContext().getString(R.string.pref_sort_key) );
  • C. boolean sortBy = PreferenceManager.getSharedPreferences(getContext()).getBoolean( getContext().getResources().getBoolean(R.bool.pref_default_sort_value), getContext().getString(R.string.pref_sort_key) );
  • D. String sortBy = PreferenceManager.getDefaultSharedPreferences(getContext()).getString( getContext().getString(R.string.pref_sort_key), getContext().getString(R.string.pref_default_sort_value) )


Answer : D

For example, we have a file in our raw folder app/src/main/res/raw/sample_teas.json. To get an InputStream for reading it, from out Context context, we can do this:

  • A. InputStream input = context.openRawResource(R.raw.sample_teas);
  • B. InputStream input = context.getRawResource(R.raw.sample_teas);
  • C. InputStream input = context.getResources().openRawResource(R.raw.sample_teas);


Answer : C

For example, we have a BufferedReader reader, associated with the json file through InputStreamReader. To get a file data we can do this:

  • A. String line; try { while ((line = reader.readLine()) != null) { builder.append(line); } JSONObject json = new JSONObject(builder.toString()); return json; } catch (IOException | JSONException exception) { exception.printStackTrace(); }
  • B. JSONObject line; try { while ((line = reader.readJSONObject ()) != null) { builder.append(line); } JSONObject json = new JSONObject(builder.toString()); return json; } catch (IOException | JSONException exception) { exception.printStackTrace(); }
  • C. String line; try { while ((line = reader.readLine()) != null) { builder.append(line); } JSONObject json = new JSONObject(builder.toString()); return json; } catch (RuntimeException|ArrayIndexOutOfBoundsException exception) { exception.printStackTrace(); }


Answer : A

For example, we have a file in our assets folder app/src/main/assets/sample_teas.json. To get an InputStream for reading it, from out Context context, we can try doing this:

  • A. InputStream input = context.getResources().openRawResource(R.raw.sample_teas);
  • B. InputStream input = context.getAssets().open("sample_teas.json");
  • C. InputStream input = context.getResources().getAssets().open("sample_teas.json");


Answer : B

An example. In our ViewModelFactory (that implements ViewModelProvider.Factory) we have an instance of our Repository, named mRepository. Our
ViewModel has such constructor:
public MyViewModel(MyRepository myRepository)...
Next, in our ViewModelFactory create ViewModel method (overriden) looks like this:
@NonNull
@Override
public <T extends ViewModel> T create(@NonNull Class<T> modelClass) { try {
//MISSED RETURN VALUE HERE
} catch (InstantiationException | IllegalAccessException |
NoSuchMethodException | InvocationTargetException e) {
throw new RuntimeException("Cannot create an instance of " + modelClass, e);
}
}
What should we write instead of "//MISSED RETURN VALUE HERE"?

  • A. return modelClass.getConstructor() .newInstance(mRepository);
  • B. return modelClass.getConstructor(MyRepository.class) .newInstance();
  • C. return modelClass.getConstructor(MyRepository.class) .newInstance(mRepository);


Answer : C

What is demonstrated by the code below?
// RawDao.java
@Dao
interface RawDao {
@RawQuery
User getUserViaQuery(SupportSQLiteQuery query);
}
// Usage of RawDao
...
SimpleSQLiteQuery query =
new SimpleSQLiteQuery("SELECT * FROM User WHERE id = ? LIMIT 1", new Object[]{userId});
User user = rawDao.getUserViaQuery(query);
...

  • A. A method in a Dao annotated class as a raw query method where you can pass the query as a SupportSQLiteQuery.
  • B. A method in a Dao annotated class as a query method.
  • C. A method in a RoomDatabase class as a query method.


Answer : A

What happens when you create a DAO method and annotate it with @Insert?
Example:
@Dao
public interface MyDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
public void insertUsers(User... users);
}

  • A. Room generates an implementation that inserts all parameters into the database in a single transaction.
  • B. Room modifies a set of entities, given as parameters, in the database. It uses a query that matches against the primary key of each entity.
  • C. Room removes a set of entities, given as parameters, from the database. It uses the primary keys to find the entities to delete.


Answer : A

What do you want from Room when you create a DAO method and annotate it with @Update?
Example:
@Dao
public interface MyDao {
@Update
public void updateUsers(User... users);
}

  • A. Room generates an implementation that inserts all parameters into the database in a single transaction.
  • B. Room modifies a set of entities, given as parameters, in the database. It uses a query that matches against the primary key of each entity.
  • C. Room removes a set of entities, given as parameters, from the database. It uses the primary keys to find the entities to delete.


Answer : B

What do you want from Room when you create a DAO method and annotate it with @Delete?
Example:
@Dao
public interface MyDao {
@Delete
public void deleteUsers(User... users);
}

  • A. Room generates an implementation that inserts all parameters into the database in a single transaction.
  • B. Room modifies a set of entities, given as parameters, in the database. It uses a query that matches against the primary key of each entity.
  • C. Room removes a set of entities, given as parameters, from the database. It uses the primary keys to find the entities to delete.


Answer : C

In Android 8.0, API level 26, some APIs regarding notification behaviors were moved from Notification to NotificationChannel. For example, what should we use instead of NotificationCompat.Builder.setPriority() for Android 8.0 and higher?

  • A. NotificationChannel.setPriority()
  • B. NotificationChannel.setImportance()
  • C. NotificationCompat.Builder.setImportance()


Answer : B

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

Page:    1 / 8   
Total 116 questions