ローカライズされていないアプリがあり、UI は 1 つの言語でしか表示されません。デバイスのロケールが変更されたときにアプリが再起動するのを避けたいです。
構成の変更を自分で処理するには、configChanges で「 locale 」プロパティを設定できることを認識しています。
android:configChanges="orientation|keyboardHidden|screenSize|locale"
さらに、私のアプリには次の最小およびターゲット SDK バージョンがあります。
<uses-sdk android:minSdkVersion="9" android:targetSdkVersion="15"/>
Android:configChanges で「locale」のみを使用すると、17 未満の SDK を使用するデバイスでのみ機能すると思われます (詳細は後述)。
Android 2.3.5 を搭載したデバイスで、前述の構成を使用してアプリをテストしました。アプリが再起動しません (予想どおり!)。
ただし、Android 4.2.2 を搭載したデバイスでは、ロケールを指定してもアプリが再起動します。再起動が構成の変更によるものかどうかをテストするために、次の関数を追加しました。
@Override
public Object onRetainNonConfigurationInstance()
{
Log.d(LOG_TAG, "onRetainNonConfigurationInstance");
return null;
}
logcat の出力に次のように表示されます。
10-11 08:53:28.838: D/myapp(10282): onRetainNonConfigurationInstance
ターゲット API が 15 に設定されているため、android:configChanges に「layoutDirection」を追加できません。sdk >= 17 を使用しているデバイスでアプリが再起動しないようにする他の方法はありますか?
前もって感謝します。