Как стать автором
Обновить

Комментарии 21

Вопросами 1 и 3 не интересовался, но со вторым: вылетит исключение, сервис будет завершен. Чтобы такой лажи не произошло, нужно сделать unbind в методе onDestroy().
Это верно. А что произойдет с сервисом, если выполнен unbind?
Если запускали сервис методом

bindService(new Intent(this, EngineService.class), conn, Context.BIND_AUTO_CREATE);

то сервис продолжит работу.
Насколько я знаю, это не так. Если сервис был запущен через bindService, то он будет остановлен после unbind: в нем больше нет надобности. Не могу сейчас найти вопрос на SO, чтобы подтвердить. Чтобы изменить это поведение, нужно делать startService(), если хочется чтобы сервис продолжил работу после unbind.
Сервис, запущенный через bind, может быть остановлен, если к нему никто не подключен. Совсем необязательно, что это произойдет сразу же после отключения последнего клиента.
Делайте unbind на ondestroy без страха. Если в remote service в этот момент, например, играла музыка в бэкграунде она замечательным образом продолжит играть (10 минут назад закончил плеер). Для этого собственно сервисы и созданы. Вот насчет local service — сложнее. Локальные запускаются в отдельном потоке, но в контексте приложения, т.е. при выходе из приложения (ondestroy) будет закрыт и поток, в котором запущен сервис. Не проверял, но думаю что так. Тем не менее с unbind это не связано. Насколько я понимаю unbind просто «отключит» текущее активити от сервиса. Но к одному сервису (в том числе локальному) могут обращаться сколько угодно activity.
Предположение на счет 3: если в манифесте этот ресивер прописан, и внутри класса он public, то вполне возможно. Это ИМХО, сам не проверял
Возможно, загвоздка в том, что класс не статический, и, соответственно, требует инстанс класса, для которого он внутренний.
Бинго. Пруф.
1) singleTask стартует новый таск, но т.к. активити A уже существует, будет показан этот экземпляр, а все, что выше, скорее всего отправится в мусор. При нажатии Back выйдем на рабочий стол (при условии что A было в корне).
Почти так и есть. Особенность в том, что существует Task 2. Таким образом мы вернемся к top-activity этого второго таска.
и более того один раз наблюдал очень странное поведение… если у единственного активити в Task1 вызвать isTaskRoot() вернется false, если есть это активити в Task 2
сорри, не *это активити в Task 2, а просто есть активити в Taks2
Нафига сгенерированный код (см пункт 1) под версионный контроль класть?
перечитайте внимательней. в первой части было сказано, что папку gen не надо в vcs, а во второй типа описание содержимого всех папок слева направо.
Не встретил в вопросах упоминания о IntentService. Очень полезная абстракция.
Спасибо, добавил упоминание.
Ужас сколько всего. Я ещё разбирался с native и opengl обёртками. Фрагменты кто-нибудь использует? У меня прога с API version 1, уж не знаю зачем, есть пара сотен пользователей, а фрагменты с четвёрки.
Кстати, reflection не рекомендую(т), лучше использовать отложенную загрузку.
А можно увидеть работу автора? Желательно, с применением хотя бы половины из перечисленных «необходимых» знаний 8)
судя по вашим приложениям

сложилось ощущение, что все вы написали просто взяли из содержания книги по андроид

лично мое мнение состоит в том, что у вас необоснованно указано ограничение на версию Android (2.0 и выше). В то же время для платной версии у вас указано минимальная версия 1.6. Глядя на функционал это больше похоже на правду. Стоит отметить, что приложение было выложено еще в 2010 г… В то время долю Android 1.6 не стоило отбрасывать.

То же самое и насчет второго приложения (Football Referee Cards). Чем обосновано ограничение на версию андроид?

Есть ли другие ваши приложения?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории