2015-01-07 2 views
-1

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

Is quitting an application frowned upon?

How to quit android application programmatically

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

+1

Возможно, вам было бы лучше добавить комментарий к одному из вышеуказанных вопросов, чем задать свой собственный вопрос и сразу же ответить на него. – spartygw

+0

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

+0

И btw, я пробовал комментировать другие вопросы, но, как новый пользователь, система не позволит мне комментировать. И предпочтительно публиковать свой вопрос с ответом на http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions, на который я смотрел, прежде чем публиковать свой вопрос и отвечая на него. – keylime

ответ

-1

Принимая во внимание ответ Нила Тротта в первом сообщении выше, я нашел идеальное решение для таких сценариев.

System.exit (0) or android.os.Process.killProcess (android.os.Process.myPid()) оба работают, если у вас есть только одна активность в стопке приложения, иначе Android просто перезагрузит ваше приложение нажатие (top-1) Activity на передний план, возможно, потому, что Android предполагает, что пользователь взаимодействует с приложением, и он внезапно «разбился», поэтому он должен продолжать взаимодействовать с ним.

Итак, мое решение состоит в том, чтобы сначала отправить приложение в фоновом режиме с помощью Activity.moveTaskToBack(), а затем вызвать один из двух методов выше.

private void terminateApp() {  

    // TODO: Don't forget to clean up your background threads, services, etc. 

    // send the app into background, otherwise Android will relaunch the app process if you have multiple Activities in your backstack. 
    moveTaskToBack(true); 

    // kill everything running in this process. 
    System.exit(-1); // or you can use android.os.Process.killProcess(android.os.Process.myPid()); 
} 

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

Надеюсь, это поможет кому-то!

+0

«Взятие кий» отличается от плагиата, а затем ссылок на спам на ваш вопрос, чтобы получить очки репутации. Вероятно, это будет иметь неприятные последствия. – 323go

+0

Где вы видели то же самое решение сказать, что это плагиат? Дайте мне знать, и я удалю свой вопрос (надеюсь, есть способ сделать это) – keylime

+0

Это тот же ответ, что и ответ Нила Тротта, на который вы ссылаетесь. Вы взяли два существенных бита, но не дали объяснений, которые сделали его ответ хорошим. – 323go