edit: это решение будет работать только для API 11 +.
Я не уверен, что полностью понимаю вашу проблему, но вы могли бы добавить вызов метода restate () в onResume действия, которое, по моему мнению, снова проходит через весь жизненный цикл.
Чтобы убедиться, что вы делаете это только при наличии действительно грязных данных, я бы установил флаг в SharedPreferences, который сообщает вашей активности в onResume (), что она должна быть воссоздана.
public void onResume(){
super.onResume();
SharedPreferences pref = getApplicationContext().getSharedPreferences(Constants.PREFS_NAME, Context.MODE_PRIVATE);
if(pref.getBoolean("isDirtyPrefs", true))
recreate();
}