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