Перезагрузка на Android

Это хорошая практика для перезагрузки Activity на Android ?

Какой был бы лучший способ сделать это? this.finish а затем this.startActivity с активностью Intent ?

Solutions Collecting From Web of "Перезагрузка на Android"

Вы можете просто использовать

 finish(); startActivity(getIntent()); 

Для обновления Activity изнутри самого себя.

Это то, что я делаю, чтобы изменить активность после изменения возврата из предпочтения.

 @Override protected void onResume() { super.onResume(); this.onCreate(null); } 

Это существенно заставляет деятельность перерисовывать себя.

Обновлено: лучший способ сделать это – вызвать метод recreate (). Это приведет к воссозданию активности.

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

 // Refresh main activity upon close of dialog box Intent refresh = new Intent(this, clsMainUIActivity.class); startActivity(refresh); this.finish(); // 

Android включает в себя систему управления процессом, которая обрабатывает создание и уничтожение действий, что в значительной степени отрицает любую выгоду, которую вы увидите при ручном перезапуске деятельности. Вы можете увидеть больше информации об этом в разделе « Основы применения»

Однако хорошая практика заключается в том, чтобы обеспечить, чтобы ваши методы onPause и onStop выпускали любые ресурсы, которые вам не нужно удержать, и использовать onLowMemory для сокращения ваших действий необходимо до абсолютного минимума.

Для тех, кто не хочет видеть, что мигание после метода recreate () просто использует

  finish(); overridePendingTransition(0, 0); startActivity(getIntent()); overridePendingTransition(0, 0); 

Начните с намерения вашей же activity и закройте свою activity .

 Intent refresh = new Intent(this, Main.class); startActivity(refresh);//Start the same Activity finish(); //finish Activity. 

В некоторых случаях это лучшая практика в других, это не очень хорошая идея, это контекст, если вы решили сделать это, используя фалеровку – лучший способ перейти от деятельности к своим сыновьям:

  Intent i = new Intent(myCurrentActivityName.this,activityIWishToRun.class); startActivityForResult(i, GlobalDataStore.STATIC_INTEGER_VALUE); 

Вещь, когда вы заканчиваете () от activityIWishToRun, вы возвращаетесь к своей живой деятельности

У меня такая же проблема

 import android.support.v4.content.IntentCompat; intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |IntentCompat.FLAG_ACTIVITY_CLEAR_TASK); 

Этот код работает для меня. Android api 17

Я не думаю, что это хорошая идея … было бы лучше реализовать более чистый метод. Например, если ваша активность содержит форму, метод clean может просто очистить каждый виджет в форме и удалить все временные данные. Я думаю, это то, что вы хотите: восстановить активность в исходное состояние.

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

У меня был другой подход, например: установив launchMode моей активности на singleTop и без вызова finish() , только startActivity(getIntent()) выполнит эту работу. Просто нужно заботиться о новых данных как в onCreate() и onNewIntent . С помощью Sush's приложение может мигать, как сказал AMAN SINGH. Но подход AMAN SINGH по-прежнему будет создавать новую деятельность, которая как-то не нужна, даже если он исправил проблему «мигания», я думаю.

Слишком поздно для этого вопроса, но если кто-то ищет решение, вот оно.