Сборник тестов: 1500 вопросов и ответов на знание Android
Шрифт:
Передать данные в putextras намерения и использовать startService с этим намерением.
Сохранить данные в общую базу данных и обеспечить доступ к ним как из активности, так и из сервиса.
Все перечисленное.
Вопрос 11
Как получить доступ к прогресс бару из сервиса?
Отправить ProgressBar идентификатор с помощью intent extras и получить доступ к нему в сервисе.
Сделать индикатор как статическую переменную в активности и получить доступ к
Если вы хотите обновить интерфейс в сервисе, вызовите динамически зарегистрированный приемник в активности из сервиса. И обновите пользовательский интерфейс из этого динамического приемника этой активности.
Поместить все элементы управления пользовательского интерфейса в общем классе и получить к нему доступ из всех компонентов.
Вопрос 12
Какие значения возвращает метод onStartCommand и когда они используются?
START_STICKY – в случае, если Android останавливает наш сервис силой, а затем перезапускает сервис, посылая нулевое намерение.
START_NOT_STICKY – в случае, если Android останавливает наш сервис силой, не перезапуская сервис, пока пользователь сам не перезапустит его.
START_REDELIVER_INTENT – в случае, если Android останавливает наш сервис силой, а затем перезапускает сервис, посылая повторно намерение.
Все перечисленное.
Вопрос 13
Как контролировать состояние подключения bound service?
Используя метод isServiceConnected , который возвращает истину, если сервис подключен.
Используя метод onServiceDisConnected , эта функция будет вызываться, если соединение нарушается.
Клиент может опрашивать сервис, доступен он или нет.
Используя класс ServiceConnection.
Вопрос 14
Предположим, мой сервис поддерживает и starting service и binding service, и в настоящее время два клиента запустили мой сервис и один клиент связался с моим сервисом. Через 5 минут клиент, который был связан с моим сервисом, отвязывается, а другой клиент останавливает мой сервис. В настоящее время мой сервис работает в памяти или выведен из памяти?
Сервис умер, но до сих пор в памяти.
Сервис мертв и выведен из памяти.
Сервис по-прежнему жив и в памяти.
Сервис все еще жив, но выведен из памяти.
Вопрос 15
Как реализовать IPC (inter process communication), используя Binder?
1. Создать сервис, реализовать оnCreate , onBind , onUnbind , оnDestroy
2. Создать файл. aidl с интерфейсными функциями.
3. Реализовать автоматический генерируемый Binder класс заглушки в сервисе.
4. Возвратить объект этого класса заглушки из onBind .
1. Создать сервис, реализовать оnCreate , onBind , onStartCommand , onUnbind ,
2. Создать файл. aidl с интерфейсными функциями.
3. Реализовать автоматически генерируемый Binder класс заглушки в сервисе.
4. Возвратить объект этого класса заглушки из onStartCommand .
1. Создать сервис, реализовать оnCreate , onBind , onStartCommand , onUnbind , оnDestroy .
2. Создать внутренний класс в классе сервиса, который расширяет класс Binder.
3. Реализовать функции этого внутреннего класса.
4. Возвратить объект этого внутреннего класса из onStartCommand .
1. Создать сервис, реализовать оnCreate , onBind , onUnbind , оnDestroy .
2. Создать внутренний класс в классе сервиса, который расширяет класс Binder.
3. Реализовать функции этого внутреннего класса.
4. Возвратить объект этого внутреннего класса из onBind .
Вопрос 16
Для реализации фоновой функциональности активности, что лучше, запустить сервис или поток?
Вы можете использовать оба, потому что оба будут делать то же самое.
Если фоновая функциональность связана с активностью, использовать поток. Если нет, запустить сервис с потоком в нем.
Имеет ли фоновая функциональность связь с активностью или нет, всегда лучше воспользоваться сервисом с потоком, а не активностью с потоком.
Если вы хотите некоторую фоновую функциональность в активности, используйте поток, нет необходимости в сервисе.
Вопрос 17
Можно ли создать сервис без какого-либо потока?
Да, вы можете иметь сервис, запущенный в главном потоке.
Нет, сервис должен иметь поток, он не может работать в главном потоке.
Да, вы можете иметь сервис, запущенный в главном потоке, только если вы не имеете какой-либо активности в главном потоке.
Поток и сервис не связаны.
Вопрос 18
Что произойдет, если вы запустите сервис без потока, как будет работать тяжелая функциональность?
Ничего не случится, сервис будет работать хорошо.
Может привести к ANR (приложение не отвечает) ошибке.
Может привести к ANR (приложение не отвечает) ошибке, если ваше приложение имеет, по меньшей мере, одну активность, поскольку эта активность будет работать в потоке пользовательского интерфейса.
Может привести к ANR (приложение не отвечает) ошибке, независимо от того, есть ли у вас, по крайней мере, одна активность или нет в вашем приложении.
Вопрос 19
В случае нехватки памяти, если Android закрывает сервис насильно, тогда сервис перезагрузится автоматически или пользователь должен запустить этот сервис?