您的位置:首页 > 移动开发

Android系统切换语言的时候APP无法更新资源文件的解决方法

2015-02-15 14:03 881 查看
你的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());   
    }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐