- Как перезапустить Android-активность
- ОТВЕТЫ
- Ответ 1
- Ответ 2
- Ответ 3
- Ответ 4
- Ответ 5
- Ответ 6
- Ответ 7
- Ответ 8
- Ответ 9
- Ответ 10
- Ответ 11
- Ответ 12
- Ответ 13
- Ответ 14
- Ответ 15
- Ответ 16
- Ответ 17
- Ответ 18
- Ответ 19
- Ответ 20
- Ответ 21
- Как перезапустить активность Android
- Как перезапустить Android-активность
- Как перезапустить активность в Android
Как перезапустить Android-активность
Как перезагрузить Android Activity ? Я попробовал следующее, но Activity просто уходит.
ОТВЕТЫ
Ответ 1
Я сделал свой видеомикшер следующим образом:
В принципе, я звоню finish() во-первых, и я использую то же самое намерение, с которого была начата эта деятельность. Это похоже на трюк?
ОБНОВЛЕНИЕ: Как было указано Ральфом ниже, Activity.recreate() — это путь в API 11 и далее. Это предпочтительнее, если вы находитесь в среде API11+. Вы по-прежнему можете проверить текущую версию и вызвать фрагмент кода выше, если вы используете API 10 или ниже. (Пожалуйста, не забудьте упрекнуть Ральфа!)
Ответ 2
Начиная с уровня API 11 (Honeycomb), вы можете вызвать recreate() метод активности (благодаря этот ответ.)
Метод recreate() действует так же, как изменение конфигурации, поэтому также вызывают методы onSaveInstanceState() и onRestoreInstanceState().
Ответ 3
Перед SDK 11 способ сделать это выглядит так:
Ответ 4
Просто, чтобы совместить ответы Ральфа и Бена (включая изменения, сделанные в комментариях):
Ответ 5
Я использовал этот код, чтобы поддерживать старые версии Android и использовать recreate() для новых версий Android.
Ответ 6
Это решение сработало для меня.
Сначала завершите действие, а затем запустите его снова.
Ответ 7
Это самый простой способ перезапустить текущую активность:
Ответ 8
Вызвать этот метод
Ответ 9
Даже если на это ответили несколько раз.
Если перезагрузка активности из фрагмента, я бы сделал это следующим образом:
Значит, вы думаете, что это немного переборщило? Но проводка Handler позволяет вам вызвать это в методе жизненного цикла. Я использовал это в методах onRestart / onResume при проверке, изменилось ли состояние между пользователем, возвращающимся в приложение. (установлено что-то).
Без Handler , если вы вызываете его в нечетном месте, он просто убьет действие и не перезапустит его.
Не стесняйтесь задавать любые вопросы.
Ответ 10
Ну, это не список, а комбо некоторых, которые уже отправлены:
Ответ 11
Фактически для уровней API 5 и выше действует следующий код, поэтому, если ваш целевой API ниже этого, вы получите нечто очень похожее на код EboMike.
Ответ 12
попробуйте использовать это.
Ответ 13
Существует один хакерский способ, который должен работать над любой деятельностью, включая основную.
При изменении ориентации Android обычно воссоздает вашу активность (если вы не отмените ее). Этот метод полезен для поворотов на 180 градусов, когда Android не воссоздает вашу активность.
Ответ 14
В сочетании с странным поведением SurfaceView жизненного цикла с камерой. Я обнаружил, что recreate() не очень хорошо работает с жизненным циклом SurfaceViews. surfaceDestroyed никогда не называется во время цикла отдыха. Он вызывается после onResume (странный), после чего мой SurfaceView уничтожается.
Исходный способ воссоздания действия отлично работает.
Я не могу точно понять, почему это так, но это просто наблюдение, которое, как мы надеемся, будет направлять других в будущем, потому что оно исправило мои проблемы с SurfaceViews
Ответ 15
Решение для вашего вопроса:
Вам нужно включить в контекст активности, чтобы начать новую деятельность, а также завершить текущую деятельность.
Надеюсь, что это поможет. и работает для меня.
Ответ 16
Если вы удалите последнюю строку, вы создадите новую act Activity, но ваш старый экземпляр все равно будет жив.
Вам нужно перезапустить Activity, как при изменении ориентации (т.е. ваше состояние сохраняется и передается на onCreate(Bundle) )?
Если вы этого не сделаете, одним из возможных способов решения проблемы будет использование одной дополнительной фиктивной операции, которая будет запущена из первого действия, и какая задача — запустить новый экземпляр. Или просто задержать вызов act.finish() , после запуска нового.
Если вам нужно сохранить большую часть состояния, вы попадаете в довольно глубокие воды, потому что это нетривиально, чтобы передать все свойства вашего состояния, особенно без утечки старого Контекста/Действия, передав его новому экземпляр.
Пожалуйста, укажите, что вы пытаетесь сделать.
Ответ 17
Я удивляюсь, почему никто не упомянул Intent.makeRestartActivityTask() , который точно делает именно эту цель.
Создайте намерение, которое можно использовать для повторного запуска задачи приложения * в своем базовом состоянии.
Этот метод устанавливает Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK в качестве флагов по умолчанию.
Ответ 18
Вы можете просто использовать
метод следующим образом
и вызовите onRestart(), где вы хотите перезапустить текущую активность
Ответ 19
Это способ, которым я делаю это.
Ответ 20
Если вы вызываете какой-то фрагмент, то делайте ниже кода.
Ответ 21
Вызвать метод onCreate. Например onCreate(null);
Источник
Как перезапустить активность Android
Как перезапустить Android Activity ? Я попробовал следующее, но Activity просто выходит.
Я сделал мой переключатель темы следующим образом:
По сути, я сначала звоню finish() и использую то же самое намерение, с которого было начато это действие. Это, кажется, делает трюк?
ОБНОВЛЕНИЕ: Как указывает Ральф ниже, Activity.recreate() — это путь в API 11 и более поздних версиях. Это предпочтительно, если вы находитесь в среде API11 +. Вы все еще можете проверить текущую версию и вызвать фрагмент кода выше, если вы используете API 10 или ниже. (Пожалуйста, не забудьте подтвердить ответ Ральфа!)
Начиная с уровня API 11 (Honeycomb), вы можете вызывать метод refreshate () действия (благодаря this answer).
Метод refreshate () действует так же, как изменение конфигурации, поэтому ваши методы onSaveInstanceState () и onRestoreInstanceState () также вызываются, если это применимо.
До SDK 11 способ сделать это выглядит так:
Просто чтобы объединить ответы Ральфа и Бена (включая изменения, сделанные в комментариях):
Я использовал этот код, чтобы по-прежнему поддерживать старые версии Android и использовать recreate() в новых версиях Android.
Это решение сработало для меня.
Сначала завершите упражнение, а затем начните его снова.
На данный момент это самый простой способ перезапустить текущую активность:
Вызовите этот метод
Хотя на это уже отвечали несколько раз.
Если перезапустить активность из фрагмента, я бы сделал это так:
Так что вы можете подумать, что это немного излишне? Но публикация Handler позволяет вам вызывать это в методе жизненного цикла. Я использовал это в методах onRestart / onResume при проверке, изменилось ли состояние между пользователем, возвращающимся в приложение. (установлено что-то).
Без Handler , если вы вызовете его в нечетном месте, он просто убьет действие и не перезапустит его.
Не стесняйтесь задавать любые вопросы.
Ну, это не в списке, но комбо некоторых, которые уже размещены:
попробуйте использовать это ..
В сочетании с странное поведение жизненного цикла SurfaceView с камерой . Я обнаружил, что create () плохо работает с жизненным циклом SurfaceView. SurfaceDestroyed никогда не вызывается во время цикла отдыха. Он вызывается после onResume (странно), после чего мой SurfaceView уничтожается.
Оригинальный способ воссоздания деятельности работает отлично.
Я не могу точно понять, почему это так, но это всего лишь наблюдение, которое, мы надеемся, поможет другим в будущем, потому что оно устранило мои проблемы, которые у меня были с SurfaceViews.
Есть один хакерский способ, который должен работать на любую деятельность, включая основную.
Когда ориентация меняется, Android обычно воссоздает вашу активность (если вы не переопределите ее). Этот метод полезен для поворота на 180 градусов, когда Android не воссоздает вашу активность.
На самом деле следующий код действителен для уровней API 5 и выше, поэтому, если ваш целевой API ниже, чем этот, вы получите нечто очень похожее на код EboMike.
Решение для вашего вопроса:
Вам нужно привести к контексту действия, чтобы начать новое действие, а также завершить текущее действие.
Надеюсь, что это полезно .. и работает для меня.
Если вы удалите последнюю строку, вы создадите новую активность act , но ваш старый экземпляр все еще будет жив.
Вам нужно перезапустить действие, как при изменении ориентации (т. Е. Ваше состояние сохраняется и передается в onCreate(Bundle) )?
Если вы этого не сделаете, одним из возможных способов решения этой проблемы будет использование одного дополнительного фиктивного действия, которое будет запущено с первого действия, и задание которого состоит в запуске нового экземпляра этого действия. Или просто отложите вызов на act.finish() после запуска нового.
Если вам нужно спасти большую часть состояния, вы попадаете в довольно глубокие воды, потому что нетривиально передать все свойства вашего состояния, особенно без утечки старого контекста/действия, передав его новому экземпляру.
Пожалуйста, укажите, что вы пытаетесь сделать.
вы можете просто использовать
метод следующим образом
и вызовите onRestart () , где вы хотите перезапустить текущую активность
Интересно, почему никто не упомянул Intent.makeRestartActivityTask() , которая делает именно эту цель.
Создайте намерение, которое можно использовать для повторного запуска задачи приложения * в своем базовом состоянии.
Источник
Как перезапустить Android-активность
Как перезапустить Android- Activity ? Я попробовал следующее, но Activity просто уходит.
Я сделал свой видеомикшер следующим образом:
В принципе, я сначала вызываю finish() , и я использую то же самое намерение, с которого была начата эта деятельность. Кажется, это трюк?
ОБНОВЛЕНИЕ: Как указано Ральфом ниже, Activity.recreate() – это путь в API 11 и далее. Это предпочтительнее, если вы находитесь в среде API11 +. Вы можете проверить текущую версию и вызывать фрагмент кода выше, если вы используете API 10 или ниже. (Пожалуйста, не забудьте оставить ответ Ральфа!)
Начиная с уровня API 11 (Honeycomb), вы можете вызвать метод recreate () активности (благодаря этому ответу).
Метод recreate () действует так же, как изменение конфигурации, поэтому также вызывают методы onSaveInstanceState () и onRestoreInstanceState (), если это применимо.
Перед SDK 11 способ сделать это выглядит так:
Просто чтобы совместить ответы Ральфа и Бена (включая изменения, сделанные в комментариях):
Это решение сработало для меня.
Сначала закончите операцию, а затем запустите ее снова.
Вызовите этот метод
Даже если на это ответили несколько раз.
Если перезапустить активность из фрагмента, я бы сделал так:
Значит, вы думаете, что это немного переборщило? Но проводка Handler позволяет вам вызвать это в методе жизненного цикла. Я использовал это в onRestart / onResume при проверке, изменилось ли состояние между пользователем, возвращающимся в приложение. (Что-то установил).
Без Handler если вы вызываете его в нечетном месте, он просто убьет действие и не перезапустит его.
Не стесняйтесь задавать любые вопросы.
Я использовал этот код, чтобы до сих пор поддерживать старые версии Android и использовать recreate() для новых версий Android.
Ну, это не список, а комбо некоторых, которые уже опубликованы:
Это самый простой способ перезапустить текущую деятельность:
На самом деле, следующий код действителен для уровней API 5 и выше, поэтому, если ваш целевой API ниже этого, вы получите нечто очень похожее на код EboMike.
Существует один хакерский подход, который должен работать над любой деятельностью, включая основную.
Когда изменения ориентации, Android обычно воссоздает вашу деятельность (если вы не переопределите ее). Этот метод полезен для поворотов на 180 градусов, когда Android не воссоздает вашу активность.
Попытайтесь использовать это ..
В сочетании со странным поведением SurfaceView LifeCycle с камерой . Я обнаружил, что recreate () не очень хорошо работает с жизненным циклом SurfaceViews. SurfaceDestroyed никогда не называется во время цикла отдыха. Он вызывается после onResume (странно), после чего мой SurfaceView уничтожается.
Исходный способ воссоздания деятельности отлично работает.
Я не могу точно понять, почему это так, но это просто наблюдение, которое, как мы надеемся, будет направлять других в будущем, поскольку оно устраняет мои проблемы с SurfaceViews
Если вы удалите последнюю строку, вы создадите новую act Activity, но ваш старый экземпляр останется в живых.
Вам нужно перезапустить Activity, как при изменении ориентации (т.е. ваше состояние сохраняется и передается в onCreate(Bundle) )?
Если вы этого не сделаете, одним из возможных способов решения проблемы будет использование одной дополнительной фиктивной операции, которая будет запущена из первого действия, и какая задача – запустить новый экземпляр. Или просто задерживайте вызов act.finish() после запуска нового.
Если вам нужно сохранить большую часть состояния, вы попадаете в довольно глубокие воды, потому что нетривиально передавать все свойства вашего состояния, особенно без утечки старого контекста / действия, передавая его новому экземпляру.
Пожалуйста, укажите, что вы пытаетесь сделать.
Решение по вашему вопросу:
Чтобы начать новую деятельность, необходимо включить в контекст активности, а также завершить текущую деятельность.
Надеюсь, это полезно .. и работает для меня.
Если вы вызываете какой-то фрагмент, то делайте ниже кода.
Вызовите метод onCreate. Например onCreate(null);
Источник
Как перезапустить активность в Android
Как перезапустить Android Activity ? Я попробовал следующее, но Activity просто выходит.
Я сделал мой переключатель темы следующим образом:
По сути, я звоню finish() первым и использую то же самое намерение, с которого началась эта деятельность. Это, кажется, делает трюк?
ОБНОВЛЕНИЕ: Как отметил Ральф ниже, Activity.recreate() это путь в API 11 и выше. Это предпочтительно, если вы находитесь в среде API11 +. Вы все еще можете проверить текущую версию и вызвать фрагмент кода выше, если вы используете API 10 или ниже. (Пожалуйста, не забудьте подтвердить ответ Ральфа!)
Начиная с уровня API 11 (Honeycomb), вы можете вызывать метод воссоздания () действия (благодаря этому ответу).
Метод refreshate () действует так же, как изменение конфигурации, поэтому ваши методы onSaveInstanceState () и onRestoreInstanceState () также вызываются, если это применимо.
До SDK 11 способ сделать это выглядит так:
Просто чтобы объединить ответы Ральфа и Бена (включая изменения, сделанные в комментариях):
Я использовал этот код, так что я все еще мог поддерживать более старые версии Android и использовать recreate() на более новых версиях Android.
Это решение сработало для меня.
Сначала завершите упражнение, а затем начните его снова.
На сегодняшний день это самый простой способ перезапустить текущую активность:
Вызовите этот метод
Хотя на это уже отвечали несколько раз.
Если перезапустить активность из фрагмента, я бы сделал это так:
Значит, вы думаете, это немного перебор? Но Handler публикация позволяет вызвать это в методе жизненного цикла. Я использовал это в onRestart / onResume методов при проверке, изменилось ли состояние между пользователем, возвращающимся в приложение. (установлено что-то).
Без этого, Handler если вы вызовете его в нечетном месте, оно просто убьет действие и не перезапустит его.
Не стесняйтесь задавать любые вопросы.
Ну, это не в списке, но комбо некоторых, которые уже размещены:
В сочетании со странным поведением SurfaceView в течение жизненного цикла с камерой . Я обнаружил, что метод create () плохо работает с жизненным циклом SurfaceView. SurfaceDestroyed никогда не вызывается во время цикла отдыха. Он вызывается после onResume (странно), после чего мой SurfaceView уничтожается.
Оригинальный способ воссоздания деятельности работает отлично.
Я не могу точно понять, почему это так, но это всего лишь наблюдение, которое, мы надеемся, поможет другим в будущем, потому что оно устранило мои проблемы, которые у меня были с SurfaceViews.
Интересно, почему никто не упомянул, Intent.makeRestartActivityTask() что делает именно эту цель.
Создайте намерение, которое можно использовать для повторного запуска задачи приложения * в ее базовом состоянии.
Этот метод устанавливает Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK флаги по умолчанию.
На самом деле следующий код действителен для уровней API 5 и выше, поэтому, если ваш целевой API ниже, чем этот, вы получите нечто очень похожее на код EboMike.
Есть один хакерский способ, который должен работать на любую деятельность, включая основную.
Когда ориентация меняется, Android обычно воссоздает вашу активность (если вы не переопределите ее). Этот метод полезен для поворота на 180 градусов, когда Android не воссоздает вашу активность.
попробуйте использовать это ..
Решение для вашего вопроса:
Вам нужно привести к контексту действия, чтобы начать новое действие, а также завершить текущее действие.
Надеюсь, что это полезно .. и работает для меня.
Если вы удалите последнюю строку, вы создадите новую act активность, но ваш старый экземпляр все еще будет жив.
Вам нужно перезапустить действие, как при изменении ориентации (т.е. ваше состояние сохраняется и передается onCreate(Bundle) )?
Если вы этого не сделаете, одним из возможных способов решения этой проблемы будет использование одного дополнительного фиктивного действия, которое будет запущено с первого действия, и заданием которого является запуск нового экземпляра. Или просто отложите звонок на act.finish() , после запуска нового.
Если вам нужно спасти большую часть состояния, вы попадаете в довольно глубокие воды, потому что нетривиально передать все свойства вашего состояния, особенно без утечки старого контекста / действия, передав его новому экземпляру.
Пожалуйста, укажите, что вы пытаетесь сделать.
Источник