2

我在检查设备是否支持 Mutli Window 模式时遇到问题。我正在使用此功能进行检查,isInMultiWindowMode()但它已添加到 API 24 中,当我在具有较低 api 版本的设备上运行我的应用程序时,它会导致异常。对于较低的 api 版本,此功能是否有替代品?

4

2 回答 2

2

对于较低的 api 版本,此功能是否有替代品?

不在 Android SDK 中。在 API 级别 23 之前没有多窗口模式(从 Android SDK 的角度来看)。而且,无论出于何种原因,Google 选择不添加isInMultiWindowMode()ActivityCompat,可能是因为它们不支持相应的事件(onMultiWindowModeChanged())。

所以,这里有一个免费的替换方法:

public static boolean isInMultiWindowMode(Activity a) {
  if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) {
    return false;
  }

  return a.isInMultiWindowMode();
}

将其添加到某个实用程序类中,并根据需要调用它。

另请注意,恕我直言,它isInMultiWindowMode()受到竞争条件的影响,使其不可靠。

于 2017-01-21T12:20:07.193 回答
0

@CommonsWare 解释的是真的,这是一个竞争条件。因此,isInMultiWindowMode()如果您从内部 post 方法调用它,将给出实际结果:

    View yourView = findViewById(R.id.yourViewId);
    yourView.post(new Runnable() {
        @Override
        public void run() {
            boolean actualResult = isInMultiWindowMode();
        }
    });
于 2018-09-17T16:50:52.287 回答