Сборник тестов: 1500 вопросов и ответов на знание Android
Шрифт:
Вопрос 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.