標籤:android 系統
你的APP支援多語言環境,假如它正在後台運行,此時使用者去更換系統語言,等系統語言換好後直接從後台開啟它,此時使用者會發現你的介面語言沒有和系統語言保持一致;為什嗎?主要是介面資源沒有重新載入
如果你是屬於自己在APP內設定語言切換,那麼就可以直接在你設定切換的那個activity裡做處理,重新啟動一次該activity就可以了,但是如果你的APP和我類似本身是沒有切換語言功能的,只是跟隨系統的,那麼你不可能在所有的activity裡處理吧!所以我這裡就直接在application中重新啟動一次app就可以解決更新資源問題了
我們都知道在Application是Android的第一入口,那麼一旦系統切換語言,就會觸發它的onConfigurationChanged()方法,那麼重新啟動我們就直接在這個方法中處理,此處的finishActivity();方法是關閉掉所有的activity,那麼在BaseActivity裡就需要執行MyApp.getInstance().addActivity(this);
public class MyApp extends Application{ private static MyApp instance = null; private List<Activity> activities =new ArrayList<Activity>(); public void addActivity(Activity activity){ activities.add(activity); } public void finishActivity() { for (Activity activity : activities) { activity.finish(); } } public static MyApp getInstance() { if (instance == null) { instance = new MyApp(); } return instance; } @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); instance = this; } @Override public void onConfigurationChanged(Configuration newConfig) { // TODO Auto-generated method stub super.onConfigurationChanged(newConfig); //配置改變觸發此方法 finishActivity();//語言切換退出 //最開始我是直接用的下面的方法,測試的時候發現如果app啟動了多個activity的時候這個執行這個方法會導致app多重啟幾次,最後用批量關閉activity解決了 //System.exit(0); //android.os.Process.killProcess(android.os.Process.myPid()); }}
Android系統切換語言的時候APP無法更新資源檔的解決方案