解释一下 public void onConfigurationChanged(Configuration newConfig) { ThreadUtils.checkOnMainThread(); // ensure the old view is removed from activity view ensureNoParent(launcherViewsUi.getRootView()); // Destroy the old view launcherViewsUi.onDestroy(); // preload a new view onto LauncherViewsUi ListenableFuture<Void> loadingFuture = preloadCache(); loadingFuture.addListener( new AbstractCwRunnable(TAG + "#LauncherViewsUiManager.onConfigurationChanged") { @Override public void run() { final ViewGroup activityView = RecentAppViewsUiManager.this.activityView; // if activity is present, attach the new view onto the activity if (activityView != null) { addUiRootViewToActivityView(activityView); } } }, executors.getUiExecutor()); }
时间: 2024-02-10 21:33:08 浏览: 29
这是一个在配置发生变化时被调用的方法,它在RecentAppViewsUiManager类中实现了ComponentCallbacks接口的方法。
首先,该方法使用ThreadUtils.checkOnMainThread()方法检查当前线程是否为主线程,如果不是,则会抛出异常。
接下来,该方法会确保UI组件不再绑定到Activity上,这是通过ensureNoParent(launcherViewsUi.getRootView())方法实现的。该方法会检查UI组件的根视图是否有父视图(即是否已经绑定到Activity上),如果有,则会调用removeView()方法将其从Activity中移除。
然后,该方法调用launcherViewsUi.onDestroy()方法销毁旧的UI组件,以便为新的UI组件腾出空间。
接着,该方法通过调用preloadCache()方法异步预加载新的UI组件,并将返回的ListenableFuture对象添加一个监听器,在异步加载完成后进行回调。该方法传递了一个AbstractCwRunnable对象和一个UI线程执行器作为参数,以便在UI线程中更新UI。
最后,该方法会将新的UI组件添加到Activity中,这是通过调用addUiRootViewToActivityView(activityView)方法实现的。如果当前Activity已经创建,则将新的UI组件添加到Activity中;否则,会等待Activity创建完成后再进行添加。
相关问题
onConfigurationChanged方法中刷新fragment
在`onConfigurationChanged`方法中刷新Fragment可以通过以下步骤实现:
1. 在你的Activity中重载`onConfigurationChanged`方法:
```java
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// 刷新fragment
}
```
2. 获取当前的Fragment实例:
```java
Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.your_fragment_container);
```
3. 调用Fragment的`onConfigurationChanged`方法:
```java
if (fragment != null) {
fragment.onConfigurationChanged(newConfig);
}
```
4. 在Fragment中重载`onConfigurationChanged`方法,并在该方法中执行刷新操作:
```java
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// 刷新fragment
}
```
注意:在Fragment中刷新UI时,应该在UI线程中执行。可以使用`runOnUiThread`方法或者`Handler`来实现。
android 10wifi 在frameworks/opt/net/wifi/service/java/com/android/server/wifi重写onconfigurationchanged,系统语言变化后移除通知再重新发送通知
你可以在 `frameworks/opt/net/wifi/service/java/com/android/server/wifi` 目录下的 `WifiServiceImpl.java` 文件中重写 `onConfigurationChanged()` 方法来实现系统语言变化后移除通知再重新发送通知的功能。
首先,找到 `WifiServiceImpl.java` 文件并打开它。然后在类中找到 `onConfigurationChanged()` 方法,并在其中添加以下代码:
```java
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// 移除通知
removeWifiNotification();
// 重新发送通知
sendWifiNotification();
}
```
上述代码中的 `removeWifiNotification()` 和 `sendWifiNotification()` 是自定义方法,你可以根据你的需求来实现。`removeWifiNotification()` 方法用于移除通知,而 `sendWifiNotification()` 方法用于重新发送通知。
完成以上更改后,保存文件并重新编译运行你的 Android 10 系统。当系统语言变化时,`onConfigurationChanged()` 方法将被调用,移除通知并重新发送通知。