**
监听系统语言变化
**
监听系统语言变化
首先先创建一个MyApplication继承Application
public class MyApplication extends Application {
//监听语言切换
public static MyApplication myApplication;
private static List<Activity> activities = new ArrayList<>();
private static MyApplication sInstance = null;
@Override
public void onCreate() {
super.onCreate();
//保存当前语言
myApplication= this;
String lang =SharedPreferenceUtil.getLanguage();
SharedPreferenceUtil .savePre(this, "LANGUAGE_KEY", "language", lang);
}
public static MyApplication getInstance() {
return sInstance;
}
}
调用系统监听语言变化接口
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
String lang = SharedPreferenceUtil.getLanguage();
String firstLang = SharedPreferenceUtil .readPre(MyApplication .getInstance(), "LANGUAGE_KEY", "language");
//如果语言发生变化
if (!lang.equals(firstLang)) {
Locale locale = null;
locale = SupportLanguageUtil.getSystemPreferredLanguage();
Log.e(TAG, "语言" + locale.getLanguage());
}
//关闭所有activity
for (int i = 0; i < activities.size(); i++) {
activities.get(i).finish();
}
}
//当语言发生变化时,杀死App进程
ActivityManager mActivityManager = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> mList = mActivityManager.getRunningAppProcesses();
for (ActivityManager.RunningAppProcessInfo runningAppProcessInfo : mList) {
if (runningAppProcessInfo.pid != android.os.Process.myPid()) {
android.os.Process.killProcess(runningAppProcessInfo.pid);
}
}
android.os.Process.killProcess(android.os.Process.myPid());
}
储存数据
public class SharedPreferenceUtil {
public static void savePre(Context context,String name,String key,String value){
//创建共享参数对象
SharedPreferences preference = context.getSharedPreferences(name, Context.MODE_APPEND);
Editor editor = preference.edit();
editor.putString(key, value);
editor.commit();
}
public static String readPre(Context context,String name,String key){
//创建共享参数对象
SharedPreferences preference = context.getSharedPreferences(name, Context.MODE_APPEND);
return preference.getString(key, "");
}
public static void delPre(Context context,String name,String key){
SharedPreferences preference = context.getSharedPreferences(name, Context.MODE_APPEND);
Editor editor = preference.edit();
if(key==null||"".equals(key)){
editor.clear();
}else{
editor.remove(key);
}
editor.commit();
}
/**
* 获取系统默认语言
* @return
*/
public static String getLanguage() {
//获取系统当前使用的语言
Locale locale = Locale.getDefault();
String language = locale.getLanguage();
return language;
}
}