のねのBlog

パソコンの問題や、ソフトウェアの開発で起きた問題など書いていきます。よろしくお願いします^^。

handleConfigurationChanged

   4041     final void handleConfigurationChanged(Configuration config, CompatibilityInfo compat) {
   4042 
   4043         int configDiff = 0;
   4044 
   4045         synchronized (mResourcesManager) {
   4046             if (mPendingConfiguration != null) {
   4047                 if (!mPendingConfiguration.isOtherSeqNewer(config)) {
   4048                     config = mPendingConfiguration;
   4049                     mCurDefaultDisplayDpi = config.densityDpi;
   4050                     updateDefaultDensity();
   4051                 }
   4052                 mPendingConfiguration = null;
   4053             }
   4054 
   4055             if (config == null) {
   4056                 return;
   4057             }
   4058 
   4059             if (DEBUG_CONFIGURATION) Slog.v(TAG, "Handle configuration changed: "
   4060                     + config);
   4061 
   4062             mResourcesManager.applyConfigurationToResourcesLocked(config, compat);
   4063 
   4064             if (mConfiguration == null) {
   4065                 mConfiguration = new Configuration();
   4066             }
   4067             if (!mConfiguration.isOtherSeqNewer(config) && compat == null) {
   4068                 return;
   4069             }
   4070             configDiff = mConfiguration.diff(config);
   4071             mConfiguration.updateFrom(config);
   4072             config = applyCompatConfiguration(mCurDefaultDisplayDpi);
   4073         }
   4074 
   4075         ArrayList<ComponentCallbacks2> callbacks = collectComponentCallbacks(false, config);
   4076 
   4077         freeTextLayoutCachesIfNeeded(configDiff);
   4078 
   4079         if (callbacks != null) {
   4080             final int N = callbacks.size();
   4081             for (int i=0; i<N; i++) {
   4082                 performConfigurationChanged(callbacks.get(i), config);
   4083             }
   4084         }
   4085     }