Сборник тестов: 1500 вопросов и ответов на знание Android - Тимур Машнин
Шрифт:
Интервал:
Закладка:
Вопрос 49
Ответ: Если поток-а хочет отправить сообщение в поток-б, тогда Looper потока-б должен быть подготовлен, чтобы получить сообщение, отправленное другими. Также возможно с помощью HandlerThread создавать межпоточную коммуникацию.
Вопрос 50
Ответ: Запросить основной поток через коммуникацию между потоками с использованием Handler или функции runOnUiThread, и манипулировать UI.
Тест 13
Вопрос 1
Ответ: Создать сервис с одним потоком в оnCreate ().
Использовать Intent Service.
Вопрос 2
Ответ: 1 главный поток, созданный Android системой.
Вопрос 3
Ответ: Android поддерживает многозадачность на уровне приложения также. Нажатие домашней кнопки на текущей задаче переведет ее в фоновый режим, а затем вы можете начать новую задачу из загрузчика. Вместе с тем, есть еще один способ начать новую задачу с помощью FLAG_NEW_TASK, когда вы запускаете новую активность.
Вопрос 4
Ответ: Да, Android поддерживает и многозадачность и многопоточность.
Вопрос 5
Ответ: Все перечисленное.
Вопрос 6
Ответ: Можно использовать любой из указанных выше механизмов, но использование сериализации в Android является не подходящим, потому что это задерживает механизм IPC.
Вопрос 7
Ответ: Android следует однопоточной модели пользовательского интерфейса, так что другие потоки не могут обновлять интерфейс. Другой поток может обновить интерфейс с помощью Handler или метод runOnUIThread ().
Вопрос 8
Ответ: Возможно через Handler Thread. Потому что Handler Thread позволяет передавать сообщения с помощью Looper. Без Handler Thread этого также можно добиться через обычный поток, если программист подготовит свой Looper программно.
Вопрос 9
Ответ: Он будет жив, но его приоритет будет меньше, по сравнению с потоком в сервисе.
Вопрос 10
Ответ: Процесс и приложение это одно и тоже. Задача может содержать одно или несколько приложений. Поток это внутренняя часть процесса, созданного ОС.
Вопрос 11
Ответ: Используйте синхронизированный блок.
Используйте синхронизированные методы.
Вопрос 12
Ответ: Синхронизированный метод – все выражения в нем синхронизированы. Синхронизированный блок – только блок кода синхронизирован, не весь метод.
Синхронизированный метод – если уже поток держит блокировку объекта функции, тогда другие потоки не могу вызвать другой синхронизированный метод того же объекта. Синхронизированный блок – если функция имеет 1000 строк кода, и я получаю доступ к общим данным только в 500 строке, тогда лучше поставить синхронизированный блок, чем сделать всю функцию синхронизированной.
Вопрос 13
Ответ: Looper – часть любого потока для цикла через очередь сообщений. Очередь сообщений – часть любого потока для хранения входящих сообщений для этого потока. Канал связи между двумя потоками – Handler.
Вопрос 14
Ответ: Основной поток это handler thread, так что он имеет активированный Looper. Только handler thread будет иметь Looper, но мы можем подготовить Looper для обычного потока также.
Вопрос 15
Ответ: Активность может содержать несколько фрагментов.
Вопрос 16
Ответ: Фрагменты предназначены эффективно использовать пространство пользовательского интерфейса устройства.
Фрагменты предназначены в качестве многократно используемых компонентов для нескольких активностей.
Фрагмент будет иметь свой собственный жизненный цикл, который будет зависеть от жизненного цикла активности.
Вопрос 17
Ответ: FragmentManager. findFragmentById (R. id. frag_id);
Вопрос 18
Ответ: Использовать папку layout-port для портретного режима и папку layout в ландшафтном режиме.
Вопрос 19
Ответ: onCreateView ()
Вопрос 20
Ответ: Фрагмент, как правило, обеспечивает свой интерфейс, используя свой собственный макет. Но, возможно, фрагмент не имеет пользовательского интерфейса в некоторых случаях, так как это не является обязательным.
Вопрос 21
Ответ: Использовать активность и ListFragment.
Вопрос 22
Ответ: ActivityFragment.
Вопрос 23
Ответ: onActivityDestroyed ().
Вопрос 24
Ответ: onAttach ()
onCreate ()
onCreateView ()
onActivityCreated ()
onStart ()
onResume ()
Вопрос 25
Ответ: Y должен использовать FragmentTransaction с FragmentManager и заменить себя экраном Z.
Вопрос 26
Ответ: Пустой процесс – приложение, которое разрушено и до сих пор в памяти.
Вопрос 27
Ответ: Спящий режим – означает, что процессор будет спать и не будет принимать любые команды, кроме как от RIL (Radio Interface Layer) и Аlarm. Процессор переходит в режим сна в доли секунды после того, как дисплей отключается.
Вопрос 28
Ответ: PARTIAL_WAKE_LOCK – использовать, когда вам нужен только работающий CPU.
SCREEN_DIM_WAKE_LOCK – использовать, когда вам нужен CPU + экран в тусклом режиме.
SCREEN_BRIGHT_WAKE_LOCK – использовать, когда вам нужен процессор + яркий экран.
FULL_WAKE_LOCK – использовать, когда вам нужно все экран, процессор, клавиатура.
Вопрос 29
Ответ: Экран погаснет, клавиатура будет выключена, но процессор по-прежнему работает.
Вопрос 30
Ответ: RIL (Radio Interface Layer – voice calls, short messages (SMS), packet data (IP communication)) и сигналы.
Вопрос 31
Ответ: Создать отложенное намерение для запуска сервиса, и дать его сигналу, чтобы запускать каждый день. Кроме того, убедитесь, чтобы добавить FULL_WAKE_LOCK в оnCreate вашего сервиса и освободите FULL_WAKE_LOCK после загрузки всех изображений.
Вопрос 32
Ответ: class MyActivity extends Activity
{
private static Drawable sBackground;
@Override
protected void onCreate (Bundle state) {
super. onCreate (state);
TextView label = new TextView (this);
label. setText («Leaks are bad»);
if (sBackground == null) {
sBackground = getDrawable (R. drawable. large_bitmap);
}
label. setBackgroundDrawable (sBackground);
setContentView (label);
}
Вопрос 33
Ответ: Используйте фрагменты, где это возможно, использовать dp вместо пикселей, используйте xhdpi изображения.
Избегайте использовать отступы на основе пикселей, вместо того используйте отступы по отношению к родителю.
Вопрос 34
Ответ: Все перечисленное.
Вопрос 35
Ответ: Один процесс и одну виртуальную машину для каждого приложения.
Вопрос 36
Ответ: Java GC не гарантирует отсутствие утечки памяти, если он находит ошибку указателя памяти, то он не может очистить эту память. Могут быть некоторые ситуации, когда на активность указывают UI компоненты, на которые указывают статические переменные, что приводит к утечке памяти в Android.
Вопрос 37
Ответ: test. java – > compile – > test. class – > dx tool – >.dex – > dvm – > final machine code.
Вопрос 38
Ответ: Класс без имени класса, но с телом.
Вопрос 39
Ответ: Класс, для которого мы можем создать только один объект:
public class Singleton {
private static Singleton instance;
public static synchronized Singleton getInstance () {
if (instance == null) {
instance = new Singleton ();
}
return instance;
}
}
Вопрос 40
Ответ: (приложение) Процесс будет загружен в память перед загрузкой первого компонента приложения, и будет убит после уничтожения всех компонентов. Но если пользователь отрывает это приложение очень часто, то, возможно, Android не будет убивать процесс для оптимизации времени загрузки этого приложения.
Вопрос 41
Ответ: Parcel используются в Binder. Мы используем Parcel только для IPC, для нормальной сериализации мы используем serializables.
Вопрос 42
Ответ: Все перечисленное.
Вопрос 43
Ответ: Вспомогательный класс позволяет управлять базами данных, создавать и управлять версиями. Это класс, где создаются и обновляются все таблицы.
Вопрос 44
Ответ: onUpgrade предназначена, в основном, для обработки новых изменений схемы базы данных для любой новой версии вашего приложения.
Вопрос 45
Ответ: Используйте TableLayout с курсором.
Вопрос 46
Ответ: Все перечисленное.
Вопрос 47
Ответ: Начать слушать CALL_STATE с помощью telephonymanager и phonestatelistener. Когда приходит входящий вызов, вызывается функция onCallStateChanged phonestatelistener слушателя.
Состояние CALL_STATE_RINGING будут передано onCallStateChanged функции.
Вопрос 48
Ответ: CALL_STATE_ONHOOK
Вопрос 49
Ответ: Breakpoint останавливает выполнение. Чтобы увидеть значение, вы можете поместить на переменную курсор или щелкните правой кнопкой мыши на переменной и добавьте к просмотру.
Вопрос 50
Ответ: debug log
Тест 14
Вопрос 1
Ответ: 2 – консольный порт и порт adb.
Вопрос 2
Ответ: Все перечисленное.
Вопрос 3
Ответ: Отображает все устройства, подключенные к серверу adb.
Отображает онлайн и оффлайн устройства.
Вопрос 4
Ответ: adb – s emulator-5556 install helloWorld. apk
Вопрос 5
Ответ: Все перечисленное.
Вопрос 6
Ответ: 5037
Вопрос 7
Ответ: После крушения LogCat будет содержать имя исключения вместе с номером строки, где оно произошло.