Домашня » як » Що саме відбувається, коли Ви проведіть Android App З недавнього списку програм?

    Що саме відбувається, коли Ви проведіть Android App З недавнього списку програм?

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

    Сьогоднішня сесія запитань та відповідей приходить нам люб'язно Android Enthusiast - підрозділ Stack Exchange, групування веб-сайтів із запитаннями та відповідями на рівні спільноти..

    Питання

    Читач Android Enthusiast Eldarerathis цікавить функціональність додатка, яка дозволяє вам перетягувати список запущених програм за допомогою кнопки "Домашня сторінка", а потім натискати на них праворуч, імовірно, щоб закрити їх:

    Останній список програм у Ice Cream Sandwich додав можливість прокручувати додатки зі списку, тим самим відкидаючи їх назавжди (і наскільки я знаю, це функція ванілі, а не CM / custom ROM). Документація та основні моменти платформи, схоже, не охоплюють функціонування цієї функціональності, але мені цікаво дізнатися, що саме робить система.

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

    Усвідомлюючи тепер, що музика може бути поганим вибором, я тестував також із програмою USA Today. Це виявилося в основному такою ж поведінкою, і здавалося, що він був змушений «перезапустити» після зупинки сили (що має сенс), хоча мініатюра в списку останніх програм не відображала це (кешований, я гадаю?).

    Отже, що ж насправді відбувається на рівні ОС, коли ви витягуєте додаток з останнього списку? Це просто очистити дані програми з оперативної пам'яті і сміття збирати його, знищуючи збережене стан?

    Що саме відбувається під час видалення програми зі списку?

    Відповіді

    Співробітник Android Enthusiast Austin Mills пропонує деяку інформацію:

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

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

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

    Потім, беручи участь у колі життя та запитань, Ельдарерат повернувся з деякими власними дослідженнями, щоб завершити відповідь:

    Здається, я знайшов чарівні пошукові терміни, які призвели до пояснень з боку співробітників Google. Зокрема, я знайшов пару різних місць, де Дайан Хакборн пояснює, що відбувається, коли ви щось витягаєте зі списку останніх. Перший - це коментар до однієї з її публікацій у Google+:

    [W] капелюх особливо трапляється, коли ви відхиляєте останнє завдання: (1) вбиває будь-який фон або порожні процеси програми (див. Тут, для чого це означає), і (2) використовує новий API, щоб повідомити будь-які служби додаток про видалення завдання, щоб він міг робити все, що вважає за доцільне.

    Вона також відзначає коментар у блозі:

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

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

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


    Маєте щось додати до пояснення? Звучить в коментарях. Хочете прочитати більше відповідей від інших технологічних користувачів Stack Exchange? Перегляньте повний потік обговорення тут.