码迷,mamicode.com
首页 > 移动开发 > 详细

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

时间:2015-02-15 15:09:55      阅读:184      评论:0      收藏:0      [点我收藏+]

标签: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无法更新资源文件的解决方法

标签:android   系统   

原文地址:http://blog.csdn.net/tmacsky/article/details/43834781

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!