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

Хорошо ли перезагружать Activity в Android?

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

Ответ 1

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

finish();
startActivity(getIntent());

чтобы обновить Activity изнутри.

Ответ 2

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

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

Ответ 3

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

@Override
protected void onResume() {

   super.onResume();
   this.onCreate(null);
}

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

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

Ответ 4

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

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

Ответ 5

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

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

Ответ 6

Я видел ранее ответы, которые были даны для перезагрузки деятельности с помощью Intent. Они будут работать, но вы также можете сделать то же самое с помощью метода refreshate(), указанного в самом классе Activity.

Вместо того, чтобы писать это

//Обновить основное действие после закрытия диалогового окна

Intent refresh = new Intent(this, clsMainUIActivity.class);
startActivity(refresh);
this.finish();

Это можно сделать, написав это только

recreate();

Ответ 7

просто используйте

this.recreate();

это вызовет метод onCreate в действии

Ответ 8

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

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

Ответ 9

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

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

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

Ответ 10

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

Ответ 11

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

Ответ 12

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

import android.support.v4.content.IntentCompat;

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |IntentCompat.FLAG_ACTIVITY_CLEAR_TASK);

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

Ответ 13

В упражнении вы можете вызвать recreate(), чтобы "воссоздать" упражнение (API 11+)

Ответ 14

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

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

Ответ 15

Перезагрузка всей вашей деятельности может быть тяжелой задачей. Просто вставьте ту часть кода, которую необходимо обновить (kotlin):

override fun onResume() {
    super.onResume()
    //here...
}

Java:

@Override
public void onResume(){
    super.onResume();
    //here...

}

И вызывайте "onResume()" всякий раз, когда это необходимо.