2011-07-28 2 views
1

Я пишу службу диспетчера задач и вынуждаю закрыть любой запущенный процесс, скажем, браузер, я попытался использовать killBackgroundProcesses, restartPackage, killProcess, но ни одно из этих действий не закрывает процесс (например, браузер), когда процесс находится на фронт еще они работают.Как заставить остановить запущенный процесс, даже работающий на фронте?

Я хочу силы остановить в процесс даже когда процесс запущен на перед. Что мне теперь делать?

ответ

2

У меня была эта проблема, как и вы. Я использовал метод в службе, который убил фоновый процесс. Поэтому, когда мне нужно убивать процесс, выполняющийся на переднем плане, я просто перенес свою активность на передний план. для автоматического выключения фона и может быть убит с помощью killBackgroundProcess.

Но, конечно, это не очень хорошая практика

+0

я могу отправить любой процесс (например браузер) на задний план? , потому что всякий раз, когда я отправляю текущий процесс в фоновом режиме, мой сервис убивает этот процесс, не выходя на передний план. – Rony

+0

вы можете. Если вы принесете свой процесс на переднем плане, то предыдущий процесс переднего плана автоматически вернется – Rasel

+0

Теперь он работает, я поместил домашнюю деятельность на передний план – Rony

3

решаемый, вот код:

Intent startMain = new Intent(Intent.ACTION_MAIN); 
startMain.addCategory(Intent.CATEGORY_HOME); 
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(startMain); 
Appmgr.killBackgroundProcesses(RunningP.processName); 
+0

Спасибо за это, Рони. Я должен добавить, что это решение может породить еще одну задачу клонирования фоновой задачи, так как ваш флаг установлен на 'NEW_TASK'. Я установил свой флаг в FLAG_ACTIVITY_CLEAR_TOP', и моя активность имела атрибут 'android: launchMode =" singleTop ", поэтому моя активность - это единственная задача, созданная для приложения. Также не было необходимости в категории «CATEGORY_HOME», без работы для меня (пока). – soulseekah

Смежные вопросы