Изменить язык во время выполнения в Android

Я должен изменить язык во время выполнения в Android (да, я знаю, что это нехорошее поведение, но это требование ...).

Итак, у меня есть базовый класс, с которого начинается каждое занятие. Этот класс имеет следующую функцию:

public static void changeLanguage(Context context) {
    Resources res = context.getResources();
    /*
     * Change locale settings in the app.
     */
    DisplayMetrics dm = res.getDisplayMetrics();

    /*
     * Store and load data in this preferences
     */
    android.content.res.Configuration conf = res.getConfiguration();
    String[] localArray = res.getStringArray(R.array.language_short_array);
    if (localArray != null) {
        SharedPreferences settings = context.getSharedPreferences(
                MyService.APP_ID, MODE_PRIVATE);
        conf.locale = new Locale(localArray[settings.getInt(
                PREFERED_LANGUAGE_KEY, 0)]);
        res.updateConfiguration(conf, dm);
    }
}

Я вызову этот метод в onCreate:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    changeLanguage(this);
}

Это в суперклассе. Моя деятельность начинается с него и сначала вызывается super.onCreate. После этого вызова они устанавливают свой макет и инициализируют свои настройки ...

Я думал, что мои строки кода сделают это. Но у меня есть следующая проблема: иногда деятельность меняет язык, а иногда нет!

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

Есть ли решение моей проблемы? Как я могу быть уверен, что мой язык изменится правильно в любое время?

Большое спасибо!

Изменить: Вот пример для класса, который выходит из моего суперкласса

public class MainMenuActivity extends BaseActivity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_start);
    }
}

Ответы на вопрос(2)

Ваш ответ на вопрос