繁体   English   中英

targetSdkVersion vs. minSdkVersion:configChanges

[英]targetSdkVersion vs. minSdkVersion: configChanges

我希望在屏幕方向更改时避免重新启动活动。 在较旧的sdk版本中,它由configChanges="orientation" (在清单中)完成。 在较新的版本中添加了screenSize

我的minSdk是8,targetSdk是17,我发现自己处于一种奇怪的情况:我不能将screenSize放入configChanges(因为minSdk),但是我的手机(4.1)会破坏方向更改的任何活动(因为targetSdk) 。

有什么出路吗? 我可以以某种方式防止这种破坏,而不必针对过时的Sdk(但仍然将它作为minSdk中的一个选项)?

您可以保留android:minSdkVersionandroid:targetSdkVersion因为您当前拥有它们(在您的示例中为8和17)。

为了能够将screenSize放入configChanges ,请更改此行

target=android-someapinumber

project.properties文件中。 选择someapinumber作为screenSize首次出现的android版本(例如,API 13)。

虽然您要求提供特定的“screenSize”问题,但此解决方案适用于您希望支持旧设备的所有类似情况,但同时您必须使用更新的功能。 在这种特殊情况下,不知道此属性的旧设备将忽略“screenSize”,因此您不必担心向后兼容性。 在其他情况下,您可能必须在源代码中添加条件,如下所示,以确保您的应用程序在运行时不会使用给定(较旧)Android版本中不可用的功能。

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) 
{
    // Code that uses features available in LOLLIPOP and newer
    // versions of android, while the app also runs on older versions
    // and supports them because of android:minSdkVersion.
}

啊,我终于找到了解决方案:

当我们指定android:configChanges =“screenSize”时,我们不能用screenSize属性影响“已知的建议解决方案” 作为eclipse在screenSize上触发xml解析错误 ,如果我们在targetSdkVersion中指定12或更少android os将不会重新启动方向更改活动。 (我现在也知道并且正在使用targetSdkVersion来识别最大支持的sdk版本。但是当我再次研究这个时,有maxSdkVersion。)

所以通过这个设置:

uses-sdk android:minSdkVersion="10" android:targetSdkVersion="12" 
android:maxSdkVersion="17"

...

android:configChanges="orientation|..."

Os不会重新启动方向更改活动,应用程序仍将支持最小和最大sdk版本,但将在兼容模式下运行sdk 12,这是sdk的最高版本,不会重新启动活动,这将解决上述问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM