Я думаю, що на сайті SDK є багато матеріалів, які погано зафіксовані, це один із них. Твердження, яке я висловлю, полягає в тому, що, здається, краще використовувати контекст програми за замовчуванням і використовувати контекст діяльності лише тоді, коли вам це потрібно. Єдине місце, де я коли-небудь бачив, що вам потрібен контекст діяльності, - це діалог про хід виконання. SBERG412 стверджує, що потрібно використовувати контекст активності для тостів, але документи Android чітко показують, що контекст програми використовується. Я завжди використовував контекст програми для тостів через цей приклад Google. Якщо це неправильно, то Google тут кинув м'яч.
Ось більше, щоб подумати і переглянути:
Для повідомлення про тости Посібник Google Dev використовує контекст програми та чітко говорить про його використання:
Toast Notifications
У розділі діалогів посібника Dev ви бачите, що AlertDialog.Builder використовує контекст програми, а потім рядок виконання використовує контекст діяльності. Google не пояснює це.
Діалоги
Здається, що вагомою причиною використання контексту програми є те, коли ви хочете обробити зміни конфігурації, як зміна орієнтації, і ви хочете зберегти об'єкти, яким потрібен контекст, як Views. Якщо ви подивитесь тут: Зміни часу запуску
Існує обережність щодо використання контексту діяльності, який може створити витік. Цього можна уникнути в контексті програми із думками, які слід зберегти (принаймні, це я розумію). У програмі, про яку я пишу, я маю намір використовувати контекст програми, тому що я намагаюся дотримуватися деяких поглядів та інших речей щодо зміни орієнтації, і я все ще хочу, щоб діяльність була знищена та відтворена щодо змін орієнтації. Таким чином, я повинен використовувати контекст програми, щоб не викликати витоку пам'яті (див. Уникнення витоків пам'яті). Мені здається, є достатньо вагомих причин використовувати контекст програми замість контексту діяльності, і мені майже здається, ви б використовували його частіше, ніж контекст діяльності. Ось, як здається, робиться багато книг для Android, які я пережив, і це те, з чого я бачив більшість прикладів Google.
З документації Google насправді здається, що використання контексту додатків ідеально добре в більшості випадків, і насправді з’являється частіше, ніж використання контексту діяльності у своїх прикладах (принаймні, приклади, які я бачив). Якщо реально така проблема використовувати контекст програми, то Google дійсно повинен приділяти цьому більше уваги. Їм потрібно зрозуміти, і вони повинні переробити деякі свої приклади. Я б не звинувачував це повністю у недосвідчених розробниках, оскільки влада (Google) насправді робить це схожим на те, що використовувати проблеми контексту додатків не проблема.