Android アプリでは、同時スレッドで同時に異なる言語を使用しようとしています。1 つのスレッドはメインの UI スレッドで、もう 1 つはさまざまな言語でユーザーにメールを送信するバックグラウンドのメール プロセスです。問題は、あるスレッドで言語を変更すると、他のスレッドの言語が変更され、「言語リーク」が発生することです。正しいリソースを使用するように言語を変更する方法は次のとおりです。
public static Resources getResourcesByLocale(Locale locale, Context context) {
Resources res = context.getResources();
AssetManager am = res.getAssets();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration mainConfig = res.getConfiguration();
Configuration config = new Configuration();
config.setTo(mainConfig);
config.locale = locale;
return new Resources(am, dm, config);
}
このメソッドは、システム全体の構成を変更します。したがって、構成を使用する他のプロセスは、ロケールによって決定されるリソースを継承します。ロケールごとに複数の構成を使用する方法はありますか? テキストを表示するたびにこのメソッドを呼び出す以外の解決策を徹底的に探しました。このアプリをヨーロッパと中東で約 27 の言語で使用したいと考えています。どんな助けでも大歓迎です。