私は約 1 年前にカスタム ロケール選択を実装しましたが、4.1 のリリース後、ユーザーは絶え間ないアクティビティの点滅に不満を持ち始めました。これが私が使用しているコードです(さまざまなSOの回答からコンパイルされています):
public final class TestApplication extends Application
{
private Locale desiredLocale = new Locale("ru-RU");
@Override
public void onCreate() {
super.onCreate();
updateLocale(new Configuration());
}
@Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
updateLocale(newConfig);
}
private void updateLocale(Configuration newConfig) {
newConfig.locale = desiredLocale;
Locale.setDefault(desiredLocale);
getBaseContext().getResources().updateConfiguration(newConfig, getBaseContext().getResources().getDisplayMetrics());
}
}
アプリケーションには、デバイスの向きを変更した後、Android によって毎秒再作成される空のアクティビティが 1 つだけ含まれています。サンプルソースはこちら。
この手法を使用するすべてのアプリケーションが無効になったようです。正しいアプローチは何ですか?