Nano Hash - криптовалюты, майнинг, программирование

Выйти из приложения для Android

Как закрыть приложение для Android, если в активном состоянии находится более одного действия?


  • Что вы подразумеваете под в активном состоянии? 28.02.2011
  • Наконец я могу выйти из приложения. скоро обновлю методы, которым я следовал 28.02.2011
  • Я использовал следующие три шага: 1) Используйте startActivityForResult(....) вместо startActivity 2) Когда нажата кнопка выхода, напишите следующий setResult(RESULT_CLOSE_ALL); финиш(); 3) @Override protected void onActivityResult (int requestCode, int resultCode, Intent data) { switch (resultCode) { case RESULT_CLOSE_ALL: setResult (RESULT_CLOSE_ALL); финиш(); } super.onActivityResult(код запроса, код результата, данные); } 28.02.2011

Ответы:


1

В сообщении блога под названием Выход из приложения Android показано, как выйти из Android-приложение:

Когда пользователь хочет выйти из всех открытых действий, он должен нажать кнопку, которая загружает первое действие, которое запускается при запуске вашего приложения, в моем случае «LoginActivity».

    Intent intent = new Intent(getApplicationContext(), LoginActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    intent.putExtra("EXIT", true);
    startActivity(intent);

Приведенный выше код очищает все действия, кроме LoginActivity. LoginActivity — это первое действие, которое вызывается, когда пользователь запускает программу. Затем поместите этот код в onCreate LoginActivity, чтобы сигнализировать, когда он должен самоуничтожиться при передаче сообщения «Выход».

    if (getIntent().getBooleanExtra("EXIT", false)) {
        finish();
    }
28.02.2011
  • проверьте мой ответ, если вы хотите простое решение 07.03.2011

  • 2

    У меня есть простое решение этой проблемы

    Из действия, которое вы нажимаете на кнопку выхода, переходите к первому действию, используя следующий исходный код. Прочтите также документацию для FLAG_ACTIVITY_CLEAR_TOP.

    Intent intent = new Intent(ExitConfirmationActivity.this, FirstActivity.class);
                intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(intent);
    

    Теперь переопределите onResume() первого действия, используя finish()

    01.03.2011
  • привет @dsc. Как я могу найти первую активность? У меня есть приложение для медиаплеера. Он показывает текущий трек в уведомлениях. И когда пользователь нажимает на уведомление, он показывает экран проигрывателя. У меня также есть домашний экран. Как я могу найти первую активность в заднем стеке? 07.06.2013
  • @syloc: первая активность означает активность, которая отображается при запуске приложения. 11.06.2013
  • Также вы можете найти первую активность, используя ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); List‹ActivityManager.RunningTaskInfo› taskInfo = activityManager .getRunningTasks(1); ComponentName componentInfo = taskInfo.get(0).baseActivity; 11.06.2013
  • Предположим, что я запустил приложение с домашнего экрана. Чем воспроизвести песню, и песня теперь в уведомлениях. Затем я нажимаю кнопку «Назад», пока не вернусь на главный экран Android. Затем я нажимаю на уведомление и снова вхожу в приложение. Но этой первой активностью стал экран Player. 11.06.2013
  • @syloc: отредактировал мой предыдущий комментарий, componentInfo всегда будет возвращать первое действие в стеке. 11.06.2013

  • 3

    Ответ прост: вам действительно не нужно «закрывать» приложение для Android. Если активность больше не проявляется, система через некоторое время завершит процесс. Пользователи могут закрыть действия, нажав кнопку «Назад». Рето Мейер довольно хорошо объясняет это здесь: http://blog.radioactiveyak.com/2010/05/when-to-include-exit-button-in-android.html

    28.02.2011

    4

    Вы также можете прочитать эту тему; это очень полезно, если не сказать больше: Выход из приложения Android - это не одобряется ?

    28.02.2011

    5

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

    Однако, если вы действительно, действительно хотите, вы все равно можете вызвать System.exit (0);, как и в любом другом Java-приложении.

    РЕДАКТИРОВАТЬ

    ActivityManager actmgr = (ActivityManager) this.getSystemService (Context.ACTIVITY_SERVICE);
    actmgr.restartPackage ("com.android.your.package.name");
    

    Я кое-что вспомнил. Я пытался использовать этот код для перезапуска своего приложения, но ему удалось только убить мое приложение. Вы можете попробовать и посмотреть, работает ли это для вас.

    28.02.2011
  • Это правда. Но следует отметить, что этот вызов может быть опасным, особенно если активны несколько потоков. Они будут остановлены. И может случиться (и Мерфи говорит, что это произойдет), что потоки остановятся в состоянии, не предусмотренном разработчиком, что может привести к повреждению данных... 28.02.2011
  • @mreichelt, поэтому я и написала действительно, действительно :) @dsc, ты уверен? Я считаю, что это должно работать... 28.02.2011
  • @ Shade, у меня это не работает ... если вы так уверены, я проверю это еще раз. Может быть какая-то другая ошибка моего приложения :( 28.02.2011
  • @Shade видел твой ответ ... Но это неправильный метод. Когда я использовал startActivityForResult вместо startActivity, я смог выйти из приложения. 01.03.2011
  • @Shade Я смог перезапустить свое приложение, используя этот метод 01.03.2011
  • @dsc, но какое действие вы начинаете останавливать в своем приложении? 01.03.2011
  • @Shade, «FirstActivity» означает корневую активность моего приложения. На самом деле я не начинаю новую деятельность. С помощью «intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)» он проверяет, началось ли уже такое действие, после чего возвращается к этому действию, закрывая все другие действия. И когда я закрою «FirstActivity», приложение будет закрыто. 02.03.2011
  • @dsc, нет, я сначала не увидел твоего ответа. Хорошее решение :) 03.03.2011
  • @Шейд, спасибо, чувак. Не могли бы вы проголосовать за этот ответ, чтобы он мог помочь тем, кому нужно это решение? 04.03.2011
  • @dsc, я проголосовал за ваш ответ, но вам, вероятно, следует установить его в качестве выбранного ответа, так как большинство людей смотрят только на него. 04.03.2011

  • 6

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

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

    28.02.2011

    7

    Как только ваша последняя активность потеряет фокус, Android выгрузит ваш процесс в соответствии с текущими потребностями системы / свободными ресурсами. Вам на самом деле на это наплевать - просто используйте жизненный цикл onStart, OnStop и т. д. для управления своим состоянием.

    28.02.2011

    8

    Если вы хотите выйти из одного действия Android, вы вернетесь к предыдущему действию или другому действию из определенного места в текущем действии.

    finish();
    System.exit(0);
    
    17.07.2012
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..