ActivityManager.killBackgroundProcesses отличается от «Force stop» - PullRequest
6 голосов
/ 09 января 2012

Я экспериментировал с ActivityManager.killBackgroundProcesses в моем приложении и заметил кое-что интересное. Я надеюсь, что кто-то на stackoverflow сможет пролить свет на это.

Так что, если я запускаю приложение, например, youtube, я сначала вижу список страниц видео, затем я нажимаю меню-> Настройки, я получаю страницу настроек. Теперь, если я нажму кнопку «Домой», которая переведет YouTube в фоновый режим. Все идет нормально. Теперь, если я запускаю ActivityManager.killBackgroundProcesses, чтобы убить приложение YouTube (или я использую Advanced Task Killer, который, как я считаю, использует тот же API), и когда я снова запускаю YouTube, я вижу страницу настроек, а не список страниц видео по умолчанию.

Но если вместо выполнения ActivityManager.killBackgroundProcesses я перехожу к системным настройкам-> управлять приложением-> Youtube-> Принудительная остановка, и когда я снова запускаю YouTube, я получаю список страниц видео, а не страницу настроек.

Таким образом, похоже, что ActivityManager.killBackgroundProcesses отличается от принудительного останова, поскольку он по-прежнему запоминает последнюю задачу / страницу, на которой он находился до того, как он был помещен в фоновый режим, тогда как принудительный останов дает вам новый старт.

У кого-нибудь есть хорошее объяснение этому? Возможно ли в моем коде сделать «принудительную остановку», чтобы начать работу с нуля?

Большое спасибо!

Ответы [ 2 ]

1 голос
/ 10 января 2012

Ну, я не уверен, как использовать его именно так, как я никогда раньше не пробовал с приложениями, кроме моего, но, возможно, это поможет - подумайте об использовании: android.os.Process.killProcess(android.os.Process.myPid());

И о вашем вопросе, почему системаможет остановиться, а ты не можешь.Правда в том, что система может больше.Более конкретно, когда вы нажимаете кнопку принудительной остановки, система посылает сигнал уничтожения (сигнал 9) для обработки с данным pid.

Вот почему я думаю, что вышеуказанная функция должна помочь, потому что она отправляет почти, если не точното же самое, сигнал.

Надеюсь, это поможет.

0 голосов
/ 10 января 2012

При записи в систему безопасности ОС Android ваше приложение не может просто убить другое действие.Вы можете отправить запрос в систему, и тогда он сделает все необходимое для вас, если это возможно.

Настройки - это системное приложение, поэтому у него больше доступа, чем у вашего приложения.

Итак,Похоже, ОС не позволяет вам убивать приложения.Не уверен, но попробуйте проверить ваше приложение permisionns - возможно, решение есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...