Сборник тестов: 1500 вопросов и ответов на знание Android - Тимур Машнин
Шрифт:
Интервал:
Закладка:
Process. checkCaller ()
Вопрос 20
Реализован простой класс, осуществляющий SQLiteOpenHelper. Также данный класс содержит методы для выполнения различных операций с базами данных, таких как создание записей клиентов. Большинство операций используют простой метод execSQL (). Однако существует более сложная операция, требующая псевдонимы столбцов. Какой класс может быть использован для создания более сложных SQL запросов?
ExtendedQueryBuilder
SQLiteComplexQuery
ComplexQueryHelper
SQLiteQueryBuilder
EnhancedSQLiteQuery
Вопрос 21
1: boolean mExternalStorageAvailable = false;
2: boolean mExtemalStorageWriteable = false;
3: String state = Environment. getExternalStorageState {);
4:
5: if (Environment. MEDIA_MOUNTED. equals (state)) {
6: mExternalStorageAvailable = mExternalStorageWriteable = AAA;
7:} else if (Environment. MEDIA_MOUNTED_READ_ONLY. equals (state)) {
8: mExternalStorageAvailable = BBB;
9: mExternalStorageWriteable = CCC;
10:} else {
11: mExternalStorageAvailable = mExternalStorageWriteable = DDD;
12:}
Необходимо установить значения флагов mExternalStorageAvailable и mExternalStorageWriteable, которые позволят корректно отобразить состояние внешнего устройства. Какие значения должны быть вместо AAA, BBB, CCC и DDD (строки 6, 8, 9 и 11 соответственно)?
false, true, false, true
true, true, false, false
true, false, false, true
false, false, true, true
true, false, true, false
Вопрос 22
public class MainActivity extends Activity {
@Override
public void onCreate (Bundle savedInstanceState) {
super. onCreate (savedlnstanceState);
setContentView (R. layout. main);
getLoaderManager (). initLoader (0, null, this);
}
@Override
public Loader <Cursor> onCreateLoader (int id, Bundle args) {
// Create and return a new Loader
}
}
Как убедиться что onCreateLoader () запускается, когда нужен новый Loader?
получить ссылку на загрузчик в методе, отличном от onCreate ()
передать значение, отличное от NULL, в качестве второго аргумента метода initLoader ()
сделать MainActivity производным классом от LoaderManager
вызвать createLoader () вместо initLoader ()
нужно, чтобы MainActivity мог выполнять интерфейс LoaderManager. LoaderCallbacks
Вопрос 23
Разрабатывается приложение, в котором должна быть возможность добавлять события в пользовательский календарь. В файле AndroidManifest. xml не нужно настраивать никакие дополнительные разрешения. Как достигнуть данной цели?
использовать CALENDAR. INSERT, отправляя детали события как POST параметры
вставить данные напрямую, через доступ к основной XSL базе данных
запросить разрешение WRITE_CALENDAR о времени выполнения приложения, используя метод PermissionManager. grantRuntimePermission ()
отправить детали события как XML файл и активировать действие, позволяющее заполнить календарь
использовать INSERT и отправить детали события как дополнительные данные
Вопрос 24
public class greeter {
public String buildGreeting (String firstName) {
String greetingl = «Hello, ";
String greeting2 =», and welcome to the application!»;
return greetingl + firstName + greeting2;
}
public StringBuffer getGreeting (String firstName) {
StringBuffer sb = new StringBuffer ();
sb. append (buildGreeting (firstName));
return sb;
}
}
Как вызвать метод getGreeting (), не создавая временных объектов?
использовать лямбда выражение, для того чтобы контекст выполнялся в стеке, а не в очереди
изменить параметры доступа к buildGreeting (), для того чтобы объекты можно было добавлять напрямую в класс StringBuffer
сделать все аргументы метода конечными и создать их копии, чтобы работать в обоих методах одновременно
использовать шаблоны в методе buildGreeting () вместо сложения строк
использовать более эффективный класс ParallelStringBuffer вместо StringBuffer
Вопрос 25
Вы просматриваете результаты трассировки вашего приложения. Приложение создает потоки, чтобы справиться с интенсивно-вычислительной работой. Вы знаете, что приложение создает несколько потоков в течение определенного времени, однако в результатах трассировки видите только один. Что вызывает данную проблему?
VM использует ID потока, который и отображается в процессе трассировки
приоритет потоков не определен, из-за чего один из них блокируется при трассировке
трассировка не может засечь более одного потока в одно и то же время
потоки выполняются очень быстро, и трассировка не может засечь каждый
VM экономит ресурсы, объединяя несколько потоков в один
Вопрос 26
Приложение пытается соединиться со службой другого разработчика. Код, отвечающий за освобождение ресурсов, отсутствует. Во время теста приложение отключается из-за недостаточного количества ресурсов. Проблема возникла из-за того, что вы не вызвали:
completeService ()
releaseService ()
stopService ()
unbindService ()
destroyService ()
Вопрос 27
1: public class ProgressTestActivity extends Activity {
2:
3: private Handler handler;
4: private ProgressBar progress;
5:
6: @Override
7: public void onCreate {Bundle savedInstanceState) {
8: super. onCreate (savedInstanceState);
9: setContentView (R. layout. main);
10: progress = (ProgressBar) findViewById (R. id. progressBar);
11: handler = new Handler ();
12:}
13:
14: public void startProgress (View view) {
15: Runnable runnable = new Runnable () {
16: @Override
17: public void run () {
18: for (int i = 0; i <= 10; i++) {
19: final int value = i;
20: try {
21: Thread. sleep (2000);
22:} catch {InterruptedException e) {}
23: handler. post (new Runnable () {
24: @Override
25: public void XXX () {
26: progress. setProgress (value);
27:}
28:});
29:}
30:}
31:};
32: new Thread (runnable). start ();
33:}
34:}
Какой метод заменит XXX в 25-й строке, для того чтобы progress bar периодически обновлялась?
handleMessage
post
execute
run
update
Вопрос 28
LocationManager manager =
(LocationManager) getSystemService (Context. LOCATION_SERVICE);
Criteria criteria = new Criteria ();
criteria. setAccuracy (Criteria. ACCURACY_LOW);
String provider = manager. getBestProvider (criteria, false);
Location location = locationManager. getLastKnownLocation (provider);
Чтобы убедиться, что точность расположения менее, чем 100 метров, нужно:
вызвать getHighAccuracyLocation () вместо getLastKnownLocation ()
использовать ACCURACY_FINE вместо ACCURACY_LOW
передать Context. LOCATION_SERVICE_ACCURATE в метод getSystemService ()
вызвать метод enhancedAccuracy (true) в объекте Location
передать ИСТИНА в качестве значения конструктора Criteria
Вопрос 29
Действие в приложении запускается, если указано полное имя класса в Intents, и не запускается во всех остальных случаях. Как неявно убедиться в том, что действие будет запущено?
добавить фильтр действия в файле AndroidManifest. xml
убедиться, что действие является расширением класса LaunchableActivity
добавить разрешение ACTIVITY_IMPLICITLY_LAUNCHABLE в файл AndroidManifest. xml
вызвать setLaunchable (true) в методе действия onCreate ()
передать ключевое значение «implicitLaunch: true» в Intent, используя запущенное действие
Вопрос 30
// onCreate () method from your searchable Activity class
@Override
public void onCreate (Bundle savedInstanceState) {
super. onCreate (savedInstanceState);
setContentView (R. layout. search);
Intent intent = getIntent ();
if (Intent. ACTION_SEARCH. equals (intent. getAction ())) {
String query = intent. getStringExtra (SearchManager. QUERY);
doMySearch (query);
}
}
Как проверить, что действие запущено, когда пользователь выполняет поиск в виджете?
вызвать makeSearchable () после вызова setContentView ()
сконфигурировать действие, которое будет обрабатывать ACTION_SEARCH
обозначить класс действий в файле searchable. xml
убедиться, что класс является производным от класса SearchableActivity
добавить к классу поле public static boolean SEARCH_ENABLED со значением ИСТИНА
Вопрос 31
<LinearLayout android: orientation=«vertical»>
<Button android: id="@+id/Button1» />
<Button android: id="@+id/Button2» />
</LinearLayout>
Пример кода взят из макета XML файла. Необходимо убедиться, что Button 1 будет находиться в фокусе, после того как пользователь сместит курсор ниже Button 2. Какую конструкцию вы бы добавили?
android: nextFocusTop="@+id/Button1» к конфигурации Button2
android: nextFocusDown="@+id/Button1» к конфигурации Button1
android: nextFocusDown="@+id/Button1» к конфигурации Button2
android: nextFocus=«previousView» к конфигурации Button2
android: nextFocusTop="@+id/Button2» к конфигурации Button1
Вопрос 32
Вы работаете с главным действием приложения. Требуется, чтобы действие, запускаемое после главного, было не во весь экран. Как этого добиться?
передать значение ИСТИНА в качестве второго аргумента конструктора Intent
установить для второго действия android: theme="@android: style/Theme. Dialog»
установить флаг ACTION_LAUNCH_DIALOG для запуска второго действия
для запуска второго действия вызвать метод startActivityAsDialog ()
убедиться, что для поля второго действия параметр AS_DIALOG установлено значение ИСТИНА
Вопрос 33
Какие четыре типа диалоговых окон есть в Android?
Alert, Progress, DatePicker, TimePicker
Feedback, Progress, DateTimePicker, Input
TextInput, Feedback, DataPicker, Toaster
Message, Progress, DatePicker, TimePicker
Immediate, Deferred, DataReciever, Progress
Вопрос 34
В проект импортированы файлы, которые размещены в папке /assets. Однако приложению нельзя ссылаться на данные файлы, используя сгенерированный файл R. java. Файлы можно сделать доступными приложению, если:
запустить перепостроение в среде Eclipse
переместить файлы в папку /bin
написать код, разрешающий доступ к файлам напрямую
обновить свойства проекта, установив dataFiles=true
отредактировать R. java и заставить файл ссылаться на себя
Вопрос 35
Требуется определить, разрешается ли пакету com.company. app начать телефонный звонок без обращения к Диалоговому интерфейсу. Какой фрагмент кода может быть использован для этого?
PackageManager.get("com.company. app»). validatePermission («android. permission. CALL_PHONE»);
context.checkPermission("com.company. app», «android. permission. CALL_PHONE»);