Поместить все элементы управления пользовательского интерфейса в общем классе и получить к нему доступ из всех компонентов.
Вопрос 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 (), оnDestroy ().
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 закрывает сервис насильно, тогда сервис перезагрузится автоматически или пользователь должен запустить этот сервис?
Сервис не будет перезапущен системой Android.
Пользователь должен перезапустить его снова.
Сервис не будет перезапущен системой Android, если метод onStartCommand () вернет START_NOT_STICKY.
Сервис не будет перезапущен системой Android, если метод onStartCommand () вернет START_STICKY или START_NOT_STICKY.
Читать дальше
Конец ознакомительного отрывка
Купить книгу