2010-10-04 4 views
1

Есть ли способ сообщить о деятельности или услуге запроса принудительного закрытия до того, как он будет убит?Ручная сила близка?

Я имею в виду, когда пользователь нажимает кнопку закрытия силы в Menu > Settings > Applications > Manage applications > app name > Force Close.

ответ

1

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

Путь к Menu > Settings > Applications > Manage applications > app name > Force Close в источнике, в случае, если это помогает, это:

ManageApplications:
https://android.googlesource.com/platform/packages/apps/Settings/+/froyo-release/src/com/android/settings/ManageApplications.java

InstalledAppDetails:
https://android.googlesource.com/platform/packages/apps/Settings/+/froyo-release/src/com/android/settings/InstalledAppDetails.java

ActivityManager.forceStopPackage:
https://android.googlesource.com/platform/frameworks/base/+/froyo-release/core/java/android/app/ActivityManager.java

ActivityManagerNative.forceStopPackage:
https://android.googlesource.com/platform/frameworks/base/+/froyo-release/core/java/android/app/ActivityManagerNative.java

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

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

+0

Спасибо большое за этот огромный объем информации! Что я пытаюсь сделать, так это запустить «приложение B», как только «приложение A» будет принудительно закрыто, вы думаете, что это может быть достигнуто в Android? : S – Shatazone

+1

@Shatazone: Я искренне надеюсь, что вы хотите, невозможно. Вредоносная программа будет использовать эту технику в одно мгновение. – CommonsWare

+0

Я предполагал, что вы можете просто зарегистрировать силу закрытия, для обратной связи или такого. Что касается запуска другого приложения, я согласен с CommonsWare, что это определенно не очень хорошая идея. Если пользователь закрывает приложение, он хочет, чтобы он закрылся, и они не хотят, чтобы это действие привело к запуску другого приложения. –

0

Я довольно новичок здесь и для Android-программирования в целом, поэтому простите меня, если это не совсем правильно. Тем не менее, я понимаю, что диалог Application Not Responseing (ANR) отображается только в том случае, если ваше приложение является либо a) неактивным, либо b) вызвало исключение, которое не было обнаружено.

В случае, если приложение не сможет ответить на любое уведомление с принудительным закрытием в разумные сроки, так как оно уже достаточно повесило трубку для создания ANR. В случае b) ваша заявка уже мертва.

+0

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

+0

Извините, в моем изобилии ответить, я неправильно понял ваш вопрос. Я не уверен, что такое этикет, я должен удалить свой ответ? Кроме того, я предполагаю, что этот метод, на который вы ссылаетесь, в основном имитирует то, что делает ANR. Поскольку ANR не будет уведомлять о замороженном/аварийном приложении, я не считаю, что он вызывает какие-либо методы очистки до его уничтожения. Поэтому я бы не догадался, что и этот метод. Опять же, это просто догадка, извините. – LEM

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