Обновить активность в Android - PullRequest
192 голосов
/ 16 июня 2010

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

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

Ответы [ 15 ]

459 голосов
/ 08 июня 2011

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

finish();
startActivity(getIntent());

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

38 голосов
/ 18 января 2013

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

@Override
protected void onResume() {

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

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

36 голосов
/ 02 августа 2016

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

 finish();
 overridePendingTransition(0, 0);
 startActivity(getIntent());
 overridePendingTransition(0, 0);
10 голосов
/ 20 мая 2011

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

// Refresh main activity upon close of dialog box
Intent refresh = new Intent(this, clsMainUIActivity.class);
startActivity(refresh);
this.finish(); //
9 голосов
/ 01 июля 2010

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

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

8 голосов
/ 26 декабря 2017

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

Вместо записи этого

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

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

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

recreate();
7 голосов
/ 06 августа 2018

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

this.recreate();

, это вызовет метод onCreate в упражнении

6 голосов
/ 10 октября 2014

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

Intent refresh = new Intent(this, Main.class);
startActivity(refresh);//Start the same Activity
finish(); //finish Activity.
3 голосов
/ 24 июня 2010

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

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

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

2 голосов
/ 05 марта 2015

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

import android.support.v4.content.IntentCompat;

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...