2010-09-27 27 views
1

我有一个应用程序,我想在尽可能多的Android手机上运行。我目前的解决方案是用最新版本编译它,并在仅用于具有正确Android版本的设备上的部分中执行关键代码。这工作得很好,直到我开始使用Android 2.2。现在在旧手机上运行应用程序会给我一个错误。在Android中使用反射时我会受到不利影响吗?

所以我想使用反射,但这意味着我将编译为版本1.5。所以我的问题是我会受到任何缺点?对于不同的版本进行编译会产生差异,因为我可以看到我的错误。那么我是否会放弃JIT支持或其他?

你们对这个主题的一些见解会很棒!提前致谢。

回答

1

有使用Java反射来支持不同的SDK的没有固有的缺点。然而,有一种更优雅的方式描述here,它使用延迟的类加载,更容易维护。我觉得这是处理不同SDK支持的更健壮的方式。

+0

如果我理解了正常加载的懒类,我仍然会为Android 2.2构建它的权利?至少这个例子说明: Pandoro 2010-09-27 18:45:28

+1

不,你可以使用targetSdkVersion =“8”,但minSdkVersion设置为你支持的最低版本。只要确保在运行时需要执行自己的版本检查。 – adamp 2010-09-28 03:52:13

2

如果我告诉你明显的事情,我很抱歉,但你确定你确实需要反思吗?

当您尝试实例化使用更高版本SDK的类,然后安装在设备/仿真器上的类时,您将遇到运行时异常。

为了避免它,您需要在运行时检查SDK版本。 例子:

//check for multitouch support (Android 2.0+) 
inputSystem = android.os.Build.VERSION.SDK_INT < 5 ? new InputSystem() : new MultitouchInputSystem(); 
+0

是的我很清楚这一点。目前我正在使用某些仅适用于更高SDK版本的相机方法。我只在检查设备上安装了哪个SDK版本之后才执行此操作。如果不是所需的版本,我切换到不同的选项。然而,我的问题是,在使用反射时我有缺点吗? – Pandoro 2010-09-27 17:51:19

+1

好吧,只是想确保您检查SDK版本以定义要实例化哪个类,但不是要调用哪个API。 – cement 2010-09-27 18:00:40

相关问题