Сделайте простейший пример и убедитесь сами. Но вообще, общепризнаная практика — смотреть как другие наступают на грабли и делать выводы, а не самим их топтать.
Вы меня подловили, снимаю шляпу :)
Действительно, все Ваши утверждения верны в пределах одного таска и указанной ссылки. Там действует FIFO стек и в пределах этого таска нажатие на Back для дочерних Activity вызовет полный цикл onPause/onStop/onDestory. Например, если у программы есть собственный SettingsActivity, то он будет вести себя именно так.
Но мы рассматриваем совсем другой случай, когда остается в таске только один Activity и нажимается Back, т.е. мы «выходим» из программы, она становится Background Task и будет все так, как я написал:
While in the background, all the activities in the task are stopped, but the back stack for the task remains intact—the task has simply lost focus while another task takes place, as shown in figure 2.
* If an activity has lost focus but is still visible (that is, a new non-full-sized or transparent activity has focus on top of your activity), it is paused. A paused activity is completely alive (it maintains all state and member information and remains attached to the window manager), but can be killed by the system in extreme low memory situations.
* If an activity is completely obscured by another activity, it is stopped. It still retains all state and member information, however, it is no longer visible to the user so its window is hidden and it will often be killed by the system when memory is needed elsewhere.
* If an activity is paused or stopped, the system can drop the activity from memory by either asking it to finish, or simply killing its process. When it is displayed again to the user, it must be completely restarted and restored to its previous state.
и
onDestroy()
The final call you receive before your activity is destroyed. This can happen either because the activity is finishing (someone called finish() on it, or because the system is temporarily destroying this instance of the activity to save space.
There are situations where the system will simply kill the activity's hosting process without calling this method (or any others) in it, so it should not be used to do things that are intended to remain around after the process goes away.
Во-вторых, он может прийти через N времени после onStop(), где N может значить часы или даже дни.
Чтобы активити был полноценно прибит, надо обрабатывать onBackPressed() и вызывать там даже не finish(), а killProcess(..), но все это крайне не рекомендуется.
Шутить изволите? При нажатии на «назад» вызывается сначала onPause(), потом onStop(). Затем процесс будет активным произвольное время, на усмотрение системы. При катастрофической нехватке памяти и отсутствии broadcast receivers, может быть закрыто почти сразу. Но в реальности даже на устройствах с 256MB RAM сейчас редко что «прибивается» сразу.
В iOS запрещено правилами делать кнопку «выход». Любая операция, которая ей аналогична, приравнивается к крашу и программа не проходит аппрув.
На Android не рекомендовано закрывать программу, только сворачивать:
Question: Does the user have a choice to kill the application unless we put a menu option in to kill it? If no such option exists, how does the user terminate the application?
Answer: (Romain Guy): The user doesn't, the system handles this automatically. That's what the activity lifecycle (especially onPause/onStop/onDestroy) is for. No matter what you do, do not put a «quit» or «exit» application button. It is useless with Android's application model. This is also contrary to how core applications work.
это когда в «режиме сна» Вы видите фотографию любимой, а не черный экран :) или органайзер с часами — кому как
А батарею, опять же, сажает не e-ink при чтении.
В eInk'ах экран «не потребляет» энергии только при отражении статической картинки. Добавить туда анимацию — и все, он становится главным потребителем энергии.
Какая анимация при чтении? Если Вы 15 страниц в минуту прочитаете, это частота обновления 0.25 Гц. Это буквально ничто для e-ink контроллера, процессор на подготовку этих 15 страниц больше энергии затратит.
> То есть прощай нормальный современный интерфейс к которому все привыкли. Спасибо, не надо.
Тут я соглашусь, 1в1 привычного интерфейса не получится. Будет что-то иное, а вот удобное ли — хз. Может и нет, но зато как сказали выше, будут свои плюшки вроде не засыпающего экрана с часами, показом скринсейвера в режиме сна, неделями работы в режиме телефона и пр. А может и нет, будущее покажет.
> Вообще-то волнует. Не видел ни одной читалки, которая в моих руках работала бы больше недели — потому что читаю много и быстро, и «экономичный» eink сажает батарейку намного быстрее заявленных двух месяцев.
На море читал на Nook Touch по 5-8 часов в день. Читаю относительно быстро. Заряда хватило на две недели, потом закончилось море… Правда, есть некоторые нюансы вроде использования собственного ридера :)
А батарею, опять же, сажает не e-ink при чтении.
О чем мы вообще говорим-то?
Я пытаюсь донести до Вас, что даже на современных Android устройствах с LCD экранами с Refresh Rate 60Hz, в среднем изменения происходят в самом-самом лучшем случае с частотой 6Hz. Если написать модуль ядра, который будет считать кол-во изменений фреймбуффера, а затем делить их на (время работы) x 60, то выйдут значения, вполне реальные для e-ink экранов и не требующие мегаватт энергии.
Но физически e-ink с частотой 20+ fps обновляться не сможет, потому кинетическая прокрутка, полноэкранные «наползания» и пр. навороты тут не применимы — нужен отдельный тип интерфейса, где анимация ограничивается рефлоу или анимацией в части экрана (анимированный гиф, флеш, баннер, короче как на видео), а не перерисовкой всего экрана. Об этом я и говорыл — «было бы желание». Пользователи Nook Touch подтвердят, что вполне реально просидеть целый день в интернете с небольшим расходом заряда, но не-адаптированный интерфейс вместе с дешевым программным e-ink контроллером вместо специализированного чипа а-ля S1D13521 превращают это в пытку.
> 250 листаний == 8 секунд анимации при 30fps. Экстраполируя получаем аж 13 минут работы для 100% заряда.
вчитайтесь, я приводил числа, чтобы показать, что заявленное количество листаний и реальные числа очень далеки друг от друга. Вообще, расчет «завяленного» количества листываний делается примерно так: берется время жизни устройства при чтении 30 минут в день, затем принимается, что в минуту человек листает от 5 до 10 раз. Получается при сроке жизни в 10 дней, заявлено 1500-3000 листаний. И никого не волнует, что если читать 10 часов подряд, то это будет уже 3000-6000 листаний, а при перелистывании программой 200 страниц в минуту может и до 100000 дойти (допущение, конечно, не проверял).
> Именно. На Хабре где-то уже приводились расчеты. Чтобы держать хоть кааую-то плавную анимацию и нормальное обновление картинки, такому мобильному телефону надо будет батарейку величиной с дом, или он будет работать смехотворно малое время.
«не верю» (с). пруфлинк?
> Откройте любой список контактов и прокрутите его вверх-вниз. Прокрутите экраны вправо-влево. Обновите информацию о погоде и время, выведите пару нотификаций. Поиграйте в игру. Запустите браузер.
Давайте относиться к этому серьезнее. Откройте список контактов и продолжайте крутить его с частотой в 60 кадров в секунду в течение часа. Я не говорю о том, что глаз более 30 кадров в секунду не воспринимает, да и далеко не каждая программа умеет 60фпс выдавать. И не важно, что при этом воспринять информацию не удастся. Банально, процессор и видео чип сожрут за это время заряд так же, как при просмотре full hd видео. Подумайте, каждые пару секунд, пока Вы не крутите экран, отображается сотня кадров, 1-в-1 повторяющих предыдущие. В браузере во время поиска Вы ведь тратите минуты на чтение с экрана, а не заставляете его отображать анимацию. Даже в шутерах на десктопном компьютере отображается в разы меньше кадров, чем fps * (время игры), потому что игрок физически не может действовать все время, а игровой контент обновляется реже, чем раз в 33 мс.
> Отрисовал 216 000 == 216 000 «поворотов страницы» в терминах е-читалок. При том, что в современных читалках максимум 6-10 тысяч «поворотов страницы». Итого «суперэкономичный» экран отработает 3 минуты, а потом батарейка кончится.
Показатель читалок в тысячах страниц зависит уж никак не от экрана. Если забить в память сотню страниц и по-одной копировать в фреймбуфер без задержки, то одной батарейки хватит на сутки такого листания в среднестатистическом ридере (домыслы, конечно, надо замерять, но 250 листаний на 1% заряда я делал на устройстве расчитаннеом на «2000 перелистываний»). В том же Nook больше всего заряда уходит на разгон процессора с sleep частоты в 66мгц до штатных 533-600 при листании.
Странный вывод. E-ink как раз максимально эргономный, потому что затраты идут только на обновление картинки, а не на поддержание. Какое количество кадров ежедневно выдает Ваш Android телефон и сколько из них были полным повторением предыдущих при частоте обновления 60 кадров в секунду? Представьте, если за час работы экран отрисовал 216 000 раз изображение, а уникальным оно было в самом пессимистичном варианте 21600 раз (1 секунда анимации 60 fps на 10 секунд чтения/более медленной анимации/простоя).
А вот один из примеров быстрой смены кадров на e-ink дисплее: www.youtube.com/watch?v=3n2xxqMQyfY
Так что, было бы желание. Но тут как с электромобилями — нефтяным магнатам невыгодно, потому и движется с трудом.
Стеклянная подложка e-ink экранов может содержать несколько точек внутреннего напряжения. Я немало Нуков разбирал и держал в руках — были случаих, когда на девайсе лопался экран банально от падения с 20см на стол. При это мой девайс (Nook 1st) однажды упал на гальку из сумки где-то с метра и остался в отличном состоянии. Может рано или поздно перейдут на гибкую подложку и будут они ударопрочными.
Расизм детектед? Седьмой по счету R&G центр в Корее на 10к сотрудников они делают для «мелочевки» и привозных специалистов? Конечно, по всему миру у них достаточно отделений, но уж скорее люди с «разрезом глаз» задают тон, а не сидят на вторых ролях.
Причем, во многих европейских и американских R&D фирмах сидят тоже выходцы из дальних стран, у которых в жизни был выбор — выбиться в люди, или выращивать рис/собирать айфоны.
В восточной культуре считается, что сначала надо повторить путь признанного мастера, а уж потом пытаться его превзойти. Приятно, что корейцы таки оставили позади этап подражания и начали двигаться дальше.
вчитайтесь, это не под GSM, а под UMTS. Именно под 2100 Мгц. Инструкция тут, проверял сам. Несколько децибел дает, получше чем встроеная, но хуже других антенн.
Действительно, все Ваши утверждения верны в пределах одного таска и указанной ссылки. Там действует FIFO стек и в пределах этого таска нажатие на Back для дочерних Activity вызовет полный цикл onPause/onStop/onDestory. Например, если у программы есть собственный SettingsActivity, то он будет вести себя именно так.
Но мы рассматриваем совсем другой случай, когда остается в таске только один Activity и нажимается Back, т.е. мы «выходим» из программы, она становится Background Task и будет все так, как я написал:
и
2. Коллективный опыт: stackoverflow.com/questions/4449955/ondestroy-never-called
3. Собственный опыт и эксперименты на разных устройствах.
Во-вторых, он может прийти через N времени после onStop(), где N может значить часы или даже дни.
Чтобы активити был полноценно прибит, надо обрабатывать onBackPressed() и вызывать там даже не finish(), а killProcess(..), но все это крайне не рекомендуется.
На Android не рекомендовано закрывать программу, только сворачивать:
Link
это когда в «режиме сна» Вы видите фотографию любимой, а не черный экран :) или органайзер с часами — кому как
Какая анимация при чтении? Если Вы 15 страниц в минуту прочитаете, это частота обновления 0.25 Гц. Это буквально ничто для e-ink контроллера, процессор на подготовку этих 15 страниц больше энергии затратит.
Тут я соглашусь, 1в1 привычного интерфейса не получится. Будет что-то иное, а вот удобное ли — хз. Может и нет, но зато как сказали выше, будут свои плюшки вроде не засыпающего экрана с часами, показом скринсейвера в режиме сна, неделями работы в режиме телефона и пр. А может и нет, будущее покажет.
> Вообще-то волнует. Не видел ни одной читалки, которая в моих руках работала бы больше недели — потому что читаю много и быстро, и «экономичный» eink сажает батарейку намного быстрее заявленных двух месяцев.
На море читал на Nook Touch по 5-8 часов в день. Читаю относительно быстро. Заряда хватило на две недели, потом закончилось море… Правда, есть некоторые нюансы вроде использования собственного ридера :)
А батарею, опять же, сажает не e-ink при чтении.
Я пытаюсь донести до Вас, что даже на современных Android устройствах с LCD экранами с Refresh Rate 60Hz, в среднем изменения происходят в самом-самом лучшем случае с частотой 6Hz. Если написать модуль ядра, который будет считать кол-во изменений фреймбуффера, а затем делить их на (время работы) x 60, то выйдут значения, вполне реальные для e-ink экранов и не требующие мегаватт энергии.
Но физически e-ink с частотой 20+ fps обновляться не сможет, потому кинетическая прокрутка, полноэкранные «наползания» и пр. навороты тут не применимы — нужен отдельный тип интерфейса, где анимация ограничивается рефлоу или анимацией в части экрана (анимированный гиф, флеш, баннер, короче как на видео), а не перерисовкой всего экрана. Об этом я и говорыл — «было бы желание». Пользователи Nook Touch подтвердят, что вполне реально просидеть целый день в интернете с небольшим расходом заряда, но не-адаптированный интерфейс вместе с дешевым программным e-ink контроллером вместо специализированного чипа а-ля S1D13521 превращают это в пытку.
> 250 листаний == 8 секунд анимации при 30fps. Экстраполируя получаем аж 13 минут работы для 100% заряда.
вчитайтесь, я приводил числа, чтобы показать, что заявленное количество листаний и реальные числа очень далеки друг от друга. Вообще, расчет «завяленного» количества листываний делается примерно так: берется время жизни устройства при чтении 30 минут в день, затем принимается, что в минуту человек листает от 5 до 10 раз. Получается при сроке жизни в 10 дней, заявлено 1500-3000 листаний. И никого не волнует, что если читать 10 часов подряд, то это будет уже 3000-6000 листаний, а при перелистывании программой 200 страниц в минуту может и до 100000 дойти (допущение, конечно, не проверял).
«не верю» (с). пруфлинк?
> Откройте любой список контактов и прокрутите его вверх-вниз. Прокрутите экраны вправо-влево. Обновите информацию о погоде и время, выведите пару нотификаций. Поиграйте в игру. Запустите браузер.
Давайте относиться к этому серьезнее. Откройте список контактов и продолжайте крутить его с частотой в 60 кадров в секунду в течение часа. Я не говорю о том, что глаз более 30 кадров в секунду не воспринимает, да и далеко не каждая программа умеет 60фпс выдавать. И не важно, что при этом воспринять информацию не удастся. Банально, процессор и видео чип сожрут за это время заряд так же, как при просмотре full hd видео. Подумайте, каждые пару секунд, пока Вы не крутите экран, отображается сотня кадров, 1-в-1 повторяющих предыдущие. В браузере во время поиска Вы ведь тратите минуты на чтение с экрана, а не заставляете его отображать анимацию. Даже в шутерах на десктопном компьютере отображается в разы меньше кадров, чем fps * (время игры), потому что игрок физически не может действовать все время, а игровой контент обновляется реже, чем раз в 33 мс.
> Отрисовал 216 000 == 216 000 «поворотов страницы» в терминах е-читалок. При том, что в современных читалках максимум 6-10 тысяч «поворотов страницы». Итого «суперэкономичный» экран отработает 3 минуты, а потом батарейка кончится.
Показатель читалок в тысячах страниц зависит уж никак не от экрана. Если забить в память сотню страниц и по-одной копировать в фреймбуфер без задержки, то одной батарейки хватит на сутки такого листания в среднестатистическом ридере (домыслы, конечно, надо замерять, но 250 листаний на 1% заряда я делал на устройстве расчитаннеом на «2000 перелистываний»). В том же Nook больше всего заряда уходит на разгон процессора с sleep частоты в 66мгц до штатных 533-600 при листании.
А вот один из примеров быстрой смены кадров на e-ink дисплее:
www.youtube.com/watch?v=3n2xxqMQyfY
Так что, было бы желание. Но тут как с электромобилями — нефтяным магнатам невыгодно, потому и движется с трудом.
Причем, во многих европейских и американских R&D фирмах сидят тоже выходцы из дальних стран, у которых в жизни был выбор — выбиться в люди, или выращивать рис/собирать айфоны.
у меня есть старый Samsung SGH C170:
полноценный телефон., с кнопками, адресной книгой и смс, по цене в 2 раза дешевле, держит больше недели.
у них самая распостраненная профессиональная болезнь — цирроз.