123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- package com.example.multilanguages;
- import android.app.Activity;
- import android.app.Application;
- import android.os.Bundle;
- /**
- * author : Android 轮子哥
- * github : https://github.com/getActivity/MultiLanguages
- * time : 2021/01/21
- * desc : Activity 语种注入
- */
- final class ActivityLanguages implements Application.ActivityLifecycleCallbacks {
- /*
- 这里解释一下,为什么要在 Activity 所有生命周期中刷新语种
- 这是因为发现有的手机厂商系统(例如 miui 系统)会偷摸修改 Activity 或 Application 绑定的语种
- Github 地址:https://github.com/getActivity/MultiLanguages/issues/52
- */
- static void inject(Application application) {
- application.registerActivityLifecycleCallbacks(new ActivityLanguages());
- }
- @Override
- public void onActivityPreCreated(Activity activity, Bundle savedInstanceState) {
- refreshActivityAndApplicationLanguage(activity);
- }
- @Override
- public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
- refreshActivityAndApplicationLanguage(activity);
- }
- @Override
- public void onActivityPostCreated(Activity activity, Bundle savedInstanceState) {
- refreshActivityAndApplicationLanguage(activity);
- }
- @Override
- public void onActivityPreStarted(Activity activity) {
- refreshActivityAndApplicationLanguage(activity);
- }
- @Override
- public void onActivityStarted(Activity activity) {
- refreshActivityAndApplicationLanguage(activity);
- }
- @Override
- public void onActivityPostStarted(Activity activity) {
- refreshActivityAndApplicationLanguage(activity);
- }
- @Override
- public void onActivityPreResumed(Activity activity) {
- refreshActivityAndApplicationLanguage(activity);
- }
- @Override
- public void onActivityResumed(Activity activity) {
- refreshActivityAndApplicationLanguage(activity);
- }
- @Override
- public void onActivityPostResumed(Activity activity) {
- refreshActivityAndApplicationLanguage(activity);
- }
- @Override
- public void onActivityPrePaused(Activity activity) {
- refreshActivityAndApplicationLanguage(activity);
- }
- @Override
- public void onActivityPaused(Activity activity) {
- refreshActivityAndApplicationLanguage(activity);
- }
- @Override
- public void onActivityPostPaused(Activity activity) {
- refreshActivityAndApplicationLanguage(activity);
- }
- @Override
- public void onActivityPreStopped(Activity activity) {
- refreshActivityAndApplicationLanguage(activity);
- }
- @Override
- public void onActivityStopped(Activity activity) {
- refreshActivityAndApplicationLanguage(activity);
- }
- @Override
- public void onActivityPostStopped(Activity activity) {
- refreshActivityAndApplicationLanguage(activity);
- }
- @Override
- public void onActivityPreSaveInstanceState(Activity activity, Bundle outState) {
- refreshActivityAndApplicationLanguage(activity);
- }
- @Override
- public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
- refreshActivityAndApplicationLanguage(activity);
- }
- @Override
- public void onActivityPostSaveInstanceState(Activity activity, Bundle outState) {
- refreshActivityAndApplicationLanguage(activity);
- }
- @Override
- public void onActivityPreDestroyed(Activity activity) {
- refreshActivityAndApplicationLanguage(activity);
- }
- @Override
- public void onActivityDestroyed(Activity activity) {
- refreshApplicationLanguage(activity.getApplication());
- }
- @Override
- public void onActivityPostDestroyed(Activity activity) {
- refreshApplicationLanguage(activity.getApplication());
- }
- /**
- * 刷新 Activity 和 Application 的语种
- */
- private void refreshActivityAndApplicationLanguage(Activity activity) {
- if (activity == null) {
- return;
- }
- MultiLanguages.updateAppLanguage(activity);
- refreshApplicationLanguage(activity.getApplication());
- }
- /**
- * 刷新 Application 的语种
- */
- private void refreshApplicationLanguage(Application application) {
- if (application == null) {
- return;
- }
- MultiLanguages.updateAppLanguage(application);
- }
- }
|