Forzar una configuración regional diferente solo funciona para la actividad superior en la pila de herramientas

Tengo un problema menor sobre la localización de la aplicación:

Este es el caso: les he dado a mis usuarios la opción desiempre Utilice la aplicación en noruego, independientemente del idioma del sistema.

Funciona bien en su mayor parte (voy a la configuración, marque la casilla para forzar a noruego, presiona "atrás" y la actividad anterior se muestra en noruego - lo mismo "al revés"), sin embargo, el cambio de idioma es solo parece actualizar correctamente (recargar recursos) para la primera actividad en mi "back stack".

Para ilustrar un escenario típico:

El usuario inicia la aplicación y se presenta con la actividad principal (en inglés). A partir de ahí, selecciona la segunda actividad (también en inglés). Luego entra en la configuración (del menú en la segunda actividad) y establece la preferencia para forzar a noruego.

Cuando luego regresa, la segunda actividad se actualiza correctamente y se muestra en noruego (hasta ahora todo bien). Sin embargo, cuando presiona "atrás" una vez más para volver a la actividad principal,eso todavía se muestra en inglés ...

Si vuelve a salir y vuelve a iniciar la aplicación, la actividad principal se muestra correctamente en noruego ...

¿Hay alguna mente brillante aquí con una sugerencia de lo que debo hacer?

Código fuente relevante:

Código incluido en cada actividad para configurar el idioma de visualización:

En onCreate:Globals.locale_default = Locale.getDefault().getDisplayLanguage();

public void onStart() {
    super.onStart();
    forceNorwegian = settings.getBoolean(getString(R.string.pref_key_forceNorwegian).toString(), false);
       if (forceNorwegian) {
           languageCheck("no");
       } else {
            Globals.locale = null;
            languageCheck(Globals.locale_default);
       }
}

public void languageCheck(String lang) {
    Globals.locale = new Locale( lang );
    // Check the current system locale and change it to Norwegian if it's not already the default
    Globals.checkLocale( this );
    if (Globals.language_changed) {
        // Restart activity
        Intent restart = getIntent();
        finish();
        Globals.language_changed = false;
        startActivity(restart);
    }
}

Globals.java:

public class Globals {

public static Locale locale = null;
    public static String locale_default = null;
    public static boolean language_changed = false;

    public static void checkLocale( Activity a ) {
        if( locale == null )
            return;

        Configuration config = a.getBaseContext().getResources().getConfiguration();
        if( !config.locale.equals( locale ) )
        {  // Change to the new locale.  Everything will need to be closed or reloaded.
            config.locale = locale;
            a.getBaseContext().getResources().updateConfiguration( config, null );
            language_changed = true;
        }
    }
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta