Обновить активность без повторного открытия?

Я применил кнопку в своем приложении, которая очищает все sharedpreferences с помощью этого кода:

context.getSharedPreferences("bifrostPrefs", 0).edit().clear().commit();

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

Intent reOpen = new Intent (Bifrost.this, Bifrost.class);
startActivity(reOpen);

Моя идея казалась умной, пока я не заметил, что если я снова открою эту активность, мне нужно дважды нажать кнопку "Назад", чтобы вернуться к основной деятельности. Поэтому я сделал несколько запросов и нашел этот код:

finish();
startActivity(getIntent());

Теперь это работает нормально, активность обновляется, а затем мне нужно только один раз щелкнуть кнопку "Назад". Но есть ли другой способ обновить активность, не запустив ее? Как вы знаете, каждый раз, когда вы открываете новую активность, она мигает и выходит, так что приложение отстает на секунду. Есть ли способ обновить активность, минуя это?

Ответ 1

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

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

Ответ 2

Вы можете добавить флаг Intent.FLAG_ACTIVITY_NO_ANIMATION (ссылка) к вашему намерению reOpen чтобы reOpen все анимации. Но, как говорится, с другой ответ лучше обновить данные внутри вас Activity.

Ответ 3

есть ли у вас некоторые представления, которые могут изменить их значение/размер на основе значений из ваших общих настроек? если да, создайте метод, который инициирует представления и вызывает этот метод для метода onCreate() и метода onClick().