我检查设备是否支持Mutli Window Mode有问题。我正在使用此功能检查它isInMultiWindowMode()
但它已在API 24中添加,当我在具有较低api版本的设备上运行我的应用程序时会导致异常。对于较低的api版本,此功能是否有任何替代品?
对于较低的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()
患有a race condition,使其不可靠,恕我直言。
@CommonsWare解释的是真的,这是竞争条件。因此,如果你从post post方法中调用它,isInMultiWindowMode()
将给出实际结果:
View yourView = findViewById(R.id.yourViewId);
yourView.post(new Runnable() {
@Override
public void run() {
boolean actualResult = isInMultiWindowMode();
}
});