Выбрать главу

oncreate> onstart ()> onDestroy ()

oncreate> onstartCommand ()> onBind ()> onUnbind ()> onDestroy ()

oncreate> onstartCommand ()> onDestroy ()

Вопрос 18

Как обеспечить безопасность сервиса программно, таким образом, что ваша служба не будет срабатывает от внешних приложений?

Не помещайте никаких фильтров намерений в тег service или поместите exported=«false»; в тег service или LocalServiceManager.

Не помещайте никаких фильтров намерений в тег service или LocalServiceManager.

Не помещайте никаких фильтров намерений в тег service или поместите imported=«false»; в тег service или LocalServiceManager.

Поместите exported=«false»; в тег service или LocalServiceManager.

Вопрос 19

Чтобы сделать некоторую фоновую работу в активности, что лучше использовать поток или сервис?

Поток лучше, так как поток тесно связан с интерфейсом пользователя.

Лучше сервис с потоком, поскольку потоки в активности будут иметь меньший приоритет по сравнению с потоком в сервисе, в случае, если такая активность находится в фоновом режиме или остановленном состоянии. Более того, в случае нехватки памяти, если поток в активности убивается, нет никакого способа, которым Android может воссоздать его. Всех этих недостатков нет в сервисе.

Вы можете использовать поток или сервис, основываясь на ваших требованиях. Но в большинстве случаев лучше использовать сервис.

И поток и сервис являются фоновыми компонентами, так что вы можете использовать любой из них.

Вопрос 20

Можно ли запустить сервис из рабочего потока?

Можно запустить сервис из любой точки, но методы оnсreate, onstartcommand работают только в главном потоке.

Можно запустить сервис из любой точки, но после этого методы оnсreate, onstartcommand будут работать в рабочем потоке. так что вы должны убедиться, что вы не должны иметь доступ к пользовательскому интерфейсу из этих функций.

Нет, это незаконно, будет бросаться исключение времени выполнения и программа будет крушиться.

Это даст ошибку времени компиляции, если мы попытаемся сделать это.

Вопрос 21

Что произойдет, если вы попытаетесь обновить пользовательский интерфейс или попробовать напечатать тост-сообщение из onHandleIntent () функции класса IntentService?

Все будет прекрасно. Мы можем обновлять интерфейс из класса IntentService.

Вы не можете обновить интерфейс из него, тост сообщение не будет напечатано.

Поведение будет странным, или тост сообщение может не появиться или же оно появится и никогда не будет удалено. Это происходит потому, что другой поток имеет доступ к интерфейсу без информирования на главного потока. При попытке обновить другие компоненты пользовательского интерфейса, будет крах.

Ничего из перечисленного.

Вопрос 22

Как переместить сервис на передний план?

Сервис всегда работает в фоновом режиме, так что не существует сервиса на переднем плане.

startForeground (int id, Notification notification);

startService (Intent intent)

Ничего из перечисленного.

Вопрос 23

Что нельзя сказать о binder service?

Могут быть ситуации, когда клиент и сервер будут в одном и том же процессе.

В случае, если клиент и сервер находятся в разных процессах, тогда мы всегда должны использовать aidl для его реализации.

В случае, если клиент и сервер находятся в разных процессах, сервис также может быть реализован с классом Messenger, если мы хотим написать однопоточное обслуживание.

Binder внутри использует Parcel.

Вопрос 24

Что нельзя сказать о Binder?

Binder является IPC драйвером, написанным на основе Linux IPC.

Binder использует Parcels вместо сериализации для маршализации данных в байтовых потоках.

Binder внутри использует концепцию общей памяти, чтобы IPC был быстрее.

Binder использует сериализацию вместо Parcels для маршализации данных в байтовых потоках.

Вопрос 25

Если я хочу создать binder service, который поддерживает многопоточную архитектуру, то что из следующего ниже я должен использовать?

Используйте только Binder класс.

Используйте класс Binder с Messenger.

Используйте. aidl и реализацию заглушки.

Все перечисленное.

Вопрос 26

Что из следующего верно о binder service?

Метод bindservice () это функция асинхронного вызова. Она возвращает только после установления связи между клиентом и сервером.

Метод onBind () будет вызываться каждый раз, когда клиент вызывает функцию bindservice.

Метод onServiceDisconnected () ServiceConnection объекта будет вызываться, когда клиент вызывает unbindeservice ().

Метод bindService () является функцией асинхронного вызова, которая сразу же возвращает. После возвращения, соединение будет установлено через некоторое время.

Вопрос 27

При реализации bounded service, где клиент и сервер находятся в одном процессе, какую функциональность я могу сделать во внутреннем классе Binder?