From:http://shigongbo.blog.163.com/blog/static/976090201362105045309/
Android重启应用程
Intent i = getBaseContext().getPackageManager() .getLaunchIntentForPackage(getBaseContext().getPackageName());
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
使用系统设置中的API会改变系统的语言,在onpause等去改变语言,效果不是太好。
另外下面的方法只有在新启动的activity中才能生效。
public void switchLanguage(Locale locale) {
Resources resources = getResources();// 获得res资源对象
Configuration config = resources.getConfiguration();// 获得设置对象
DisplayMetrics dm = resources.getDisplayMetrics();// 获得屏幕参数:主要是分辨率,像素等。
config.locale = locale; // 简体中文
resources.updateConfiguration(config, dm);
}
新浪微博以及微信都有多语言项,而且都是在设置界面。也就是说除了当前切换语言界面还有其它已启动的activity存在。
新浪微博使用重新启动的方式实现,微信则看似没有重新启动应用。我猜测分析发现其是将现有的activity栈中的除首页外都finish了,然后手动的将首页activity切换语言 。这样就完美实现了。