Який правильний спосіб закрити програми в Android?


69

Я новачок у платформі Android, і це, мабуть, німе питання, але ...

Як закрити додаток?

Коли я в програмі, і я хочу вийти, я просто натискаю "Домашня сторінка" і рухаюся далі, але я щойно встановив додаток Диспетчер завдань, і я помітив, що все працює.

Чи є спосіб вийти з програм? Або мені потрібно використовувати Диспетчер завдань кожен раз, коли я щось закриваю?


Відповіді:


48

Якщо ви виходите з програми за допомогою BACKкнопки, то вона зателефонує onDestroy()на поточну активність, якщо ви натиснете HOMEлише на дзвінки onPause()
Не надто хвилюйтеся, хоча діяльність не буде розряджати акумулятор, вони просто залишаться в пам'яті, щоб їх можна було відкрити швидше в майбутньому.

Я б не рекомендував використовувати одне із цих програм для вбивць завдань. Android призначений для того, щоб зберегти ці речі в пам’яті з якоїсь причини, а використання вбивці завдань є лише ще однією додатковою послугою, що тягне за собою акумулятор. На що потрібно стежити - це додатки, які запускають сервіси у фоновому режимі, такі як клієнти щебетання або електронної пошти, що тягнуть їх сервери, будь-яке хороше додаток, яке має подібну послугу, матиме можливість вимкнути її.


1
Я помітив пару додатків , які дійсно їдять через багато батареї в цьому стані паузи. А саме, остання версія Google Maps і гри, яку я отримав, називається GalaxIR. Тож стежте за поганими правопорушниками і обов'язково закрийте їх належним чином.
keithjgrant

1
ви помиляєтесь, якщо це їсть ваше тісто, це фонова послуга.
Натан Шверман

5
Дійсно, існує програма, яка недостатньо розроблена і не відповідає життєвому циклу додатків Android. Наприклад, потік можна залишати активним у активності навіть після того, як він був призупинений ОС (натисканням Home), у цьому випадку додаток продовжить використовувати батарею.
jmbouffard

1
Я виявив, що багато програм не виходять, коли натискаю кнопку Назад. Наприклад: Pandora, G
Clay Nichols

1
(час моєї редакції минув) .... інші програми, які не закриваються на кнопці "Назад": Pandora (яка навіть продовжує програватися після натискання "Назад"), Google Play Store, FaceBook, Podkicker. Те, як я тестую, - це натиснути кнопку "Назад" до тих пір, поки додаток не зникне (зазвичай це повертає мене додому), а потім запустіть Easy Task Killer.
Клей Ніколс

25

Я майже впевнений, що все, що я коли-небудь читав, говорить про те, що Backкнопка - це правильний спосіб виходу з програм.

Натискання Homeзалишає їх працювати у фоновому режимі, поки Android не вирішить, що вони більше не потрібні, що може бути зручно, якщо вам просто потрібно перемикатися між додатками, щоб щось перевірити (утримуючи додому пару секунд, ви подаєте список нещодавно запущених програм ви можете переключитися на більшість телефонів), але, вийшовши за допомогою кнопки "Назад", повідомляє програму, що ви хочете її закрити.


3
Утримуючи Homeкнопку, просто перелічіть останні 6 відкритих програм, а не запущені.

@ Loïc: він показує 8 для мене.
алей

1
@LoicWolff, AlEverett Це залежить від розгляданого запуску та самого ПЗУ.
t0mm13b

Це не зовсім так. Дії не працюють у фоновому режимі на Android.
Dan Hulme

12

Деякі додатки мають у своїх меню опцію "Вихід". Більшість ні.

Вам не потрібно про це хвилюватися. Ви можете просто перейти до будь-якого додатка, який вам знадобиться далі. Android виконує досить непогану роботу, звільняючи ресурси, коли потрібно.

Оновлення : AndroidSpin провів декілька реальних досліджень .


Приємне посилання, ty :)
Потік

7

Діяльність не працює у фоновому режимі

В Android діяльність (тобто та частина програми, яку ви можете бачити) ніколи не працює у фоновому режимі. Вони можуть працювати (і використовувати акумулятор) лише тоді, коли вони знаходяться на екрані. Діяльність припиняється, незалежно від того, використовуєте ви її додому чи назад, щоб залишити її. Різниця полягає лише в тому, які дані Android просить програму зберегти, тому жоден варіант не є "правильним способом". Це просто залежить від того, що ви хочете зробити.

Головна

Якщо ви використовуєте домашню програму , Android залишає додаток у тому самому стані, щоб, якщо ви повернетесь до нього пізніше (наприклад, через останній список програм), він все ще буде в тому ж стані, який ви залишили: на тому ж екрані з тим самим зображеним матеріалом. Наприклад, якщо це програма електронної пошти, і ви переглядали одну електронну пошту, то вона запам’ятає, який саме електронний лист був, і покаже вам той самий.

Врешті-решт (приблизно через півгодини) Android приходить до висновку, що ви не повертаєтесь до програми, тому він скидає цей стан: наступного разу, коли ви запускаєте додаток, він запускається з переднього / головного екрану. Щоб продовжити приклад, програма електронної пошти забуде, яку електронну пошту та папку ви шукали, і покаже вам вхідні.

Назад

Якщо ви повертаєтесь назад , ви говорите Android, що не хочете повертатися до цього погляду. Це знищить інформацію про те, що ви дивилися відразу. Наступного разу, коли ви запустите програму, вона відобразить передній екран (наприклад, вхідні).

Як уже говорили інші, програми можуть контролювати поведінку кнопки " назад" : наприклад, веб-браузери використовують її для повернення в історію браузера. Те, що я описав, - це поведінка кнопки "назад" за замовчуванням, і розробники закликають дотримуватися такої поведінки, щоб не заплутатись.

Кешовані фонові процеси

Незалежно від того, яким методом ви користуєтесь, Android залишатиме додаток у пам’яті (але не працює) стільки, скільки зможе. Це має бути ефективнішим. Коли ви повернетесь до програми, якщо він все ще зберігається в пам'яті, Android може знову запустити його; якщо це все ще не в пам’яті, Android повинен витратити час і енергію, завантажуючи додаток із місця зберігання знову.

У старих версіях Android програми, залишені в пам'яті у фоновому режимі таким чином, були включені до списку "запущених додатків". Це трохи заплутано для користувачів - це змушує людей вважати, що додаток все ще працює, тому новіші версії називають ці програми "кешованими фоновими процесами", щоб зрозуміти, що вони кешовані, а не запущені.

Що з фоновими програмами?

Раніше я говорив, що діяльність не працює на задньому плані. То як ваш клієнт електронної пошти перевіряє пошту? Крім програм, додатки можуть мати послуги . Служби не мають жодного графічного інтерфейсу, який ви могли б бачити або взаємодіяти, але вони працюють у фоновому режимі. Зазвичай сервіс запускається лише нечасто, наприклад, перевіряти пошту раз на годину, але розробник програми може весь час запускати послугу, виряджаючи акумулятор.

Залишення активності зі спиною чи додому не змінює те, як Android поводиться з будь-якими послугами одного і того ж додатка: служба може продовжувати працювати або запускатись пізніше в певний час (наступного разу, коли чекає перевірка пошти).

Підсумок

Підсумовуючи це, насправді не важливо, чи використовуєте ви назад чи додому : він змінює лише те, що додаток показує вам наступного разу, коли ви запускаєте його. Це не впливає на використання акумулятора. Жоден з них не відповідає "виходу з програми" на вашому ПК.


Я так рада, що хтось прикрив це! Я розробник, але я працював у Verizon Wireless і не можу сказати, скільки людей хвилювалося з цього приводу, коли не було потреби.
Роан

3

В Android додатки ніколи не потрібно закривати, і ОС піклується про очищення пам'яті будь-яких інших програм, коли ресурси потрібні в іншому місці. Використання вбивці завдань просто порушить нормальну роботу ОС і навіть може сповільнити пристрій, оскільки програми завжди доведеться перезавантажувати з самого початку.

Життєвий цикл додатків Android працює таким чином, що додатки, які не знаходяться на вершині, переміщуються у призупиненому стані, який більше не використовує жодного процесора; зберігається лише вміст пам'яті у випадку, якщо програма знову відкриється; і пам'ять буде звільнена, якщо потрібно.

З цього приводу розробник додатку несе відповідальність за дотримання життєвого циклу програми, коли він створює свою програму, тому можуть виникнути помилки або помилки, які призведуть до того, що програма ніколи насправді не зупиняється або призупиняється. Якщо ви зіткнулися з такою програмою і чим її закрити, ви можете зробити це через "Налаштування" -> "програми" -> "Керування програмами", вибравши в програмі "Призупинити зупинку".

Але я б не рекомендував використовувати вбивцю завдань, яка постійно працює на пристрої.


1

Просто хочу додати у відповідь schwiz, що для зміни функціональності кнопки "назад" потрібно лише кілька рядків коду. Тож не завжди надійно закривати додаток. Тож якщо розробник програми не хоче закривати додаток натисканням кнопки "назад", він не закриється.

Хоча більшість хороших розробників додатків відкриває діалогове вікно про натискання кнопки "назад" у головному меню програми, запитуючи, чи має намір користувач вийти з програми чи ні, якщо натиснути на вихід, він закриває додаток.

Правильна відповідь могла б бути такою: закриття програми відбувається повністю на розробника програми, якщо вони хочуть, щоб програма закрилася натисканням на кнопку додому, вони поставлять код виходу onPause(). Якщо вони захочуть його на кнопці "Назад", вони поставлять її в onBackKeyPressed. Так що насправді це не під рукою користувача.

Користувач може просто уникати використання програм, які не забезпечують належного функціонального закриття, коли це не потрібно. Менеджери завдань не є гарним способом закрити додаток, оскільки він може вийти з ладу і не дає їм шансів зберегти свій стан.

ОС завжди закриває додаток, коли це необхідно, тому вам не варто надто турбуватися про це.

Редагувати.
Існує можливість знищити програми, як тільки ви вийдете з програми, тобто, коли натискаєте домашню клавішу. Можна перейти до Settings-> Developer Options-> Don't keep Activities. Хоча це варіант для розробника, але якщо ви занадто переймаєтесь програмами, що працюють у фоновому режимі, ви можете використовувати цю опцію. Але майте на увазі, що не рекомендується використовувати його не розробникам.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.