GVKun编程网logo

为Android项目选择ORM(最低API级别7)

5

此处将为大家介绍关于为Android项目选择ORM的详细内容,并且为您解答有关最低API级别7的相关问题,此外,我们还将为您介绍关于AndroidAppCompat需要API级别11、AndroidB

此处将为大家介绍关于为Android项目选择ORM的详细内容,并且为您解答有关最低API级别7的相关问题,此外,我们还将为您介绍关于Android AppCompat需要API级别11、Android BROWSABLE意向API级别、Android Calendar Provider API级别、Android Call需要API级别13(当前最小值为10):android.view.Display #getSize的有用信息。

本文目录一览:

为Android项目选择ORM(最低API级别7)

为Android项目选择ORM(最低API级别7)

我目前有一个应用程序,其主要性能问题是使用由JSON响应组成的基于文件的数据库。

我想重写我的应用程序以使用SQLite数据库功能。
由于我很懒,所以我想使用某种ORM。

到目前为止,我只发现了两个大型ORM库:

  • ORMLite
  • greendao-ORM
  • DB4O
  • ActiveAndroid

我的主要目标是尽可能 提高数据处理性能

但是我发现这些库有两个可能的问题。

  • ORMLite使用 批注 ,由于此错误,这是 蜂巢前的性能问题

  • GreenDAO正在使用某种代码生成器,这会降低我的开发速度,因为我必须编写生成器,然后使用生成的代码。而且我不太喜欢这个主意。

  • DB4O是JPA,我一直认为它很慢且占用大量内存,因此不适合低端设备(请记住Android API v7)


ad @ChenKinnrot
估计的负载应足以考虑使用ORM。
在我的情况下, 大约有25-30个唯一表,并且至少有10个表联接(一次2-4个表)。 大约300-500个唯一字段(列)


所以我的问题是:

  1. 我应该在Android应用程序中使用ORM / JPA层吗?
  2. 如果是这样,您会建议我使用哪个库? (并且也请添加一些参数)

答案1

小编典典

我使用过ORMLite,并在掌握了它之后(几个小时)就发现它很简单,功能强大并且没有引起任何性能问题(在Gingerbread中对HTC欲望和HTCHero进行了应用测试)。

我将在需要使用数据库的任何项目中再次使用它。

Android AppCompat需要API级别11

Android AppCompat需要API级别11

我有一个应用程序,使用AppCompat支持libary的ActionBars.现在我试图为此创建一个新的具有某种风格的themes.xml文件.
<!-- Application theme. -->
<style name="AppTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <item name="android:actionBarStyle">@style/MyActionBar</item>
    <item name="actionBarStyle">@style/MyActionBar</item>
</style>

所以就像在这里完成的一样:http://developer.android.com/guide/topics/ui/actionbar.html#StyleExample
然而,Eclipse在这里抛出一个错误,并说:

android:actionBarStyle requires API level 11 (current min is 8) themes.xml

我如何使用支持库?

解决方法

在res / values-14下的styles.xml中添加以下内容
<style name="Theme.Styled" parent="@style/Theme.AppCompat.Light">
    <!-- Setting values in the android namespace affects API levels 14+ -->
    <item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item>

</style>

<style name="Widget.Styled.ActionBar" parent="@style/Widget.AppCompat.Light.ActionBar">
    <!-- Setting values in the android namespace affects API levels 14+ -->
    <item name="android:background">#FFFFFF</item>

</style>

然后,您需要在values文件夹中添加以下内容:res / values / styles.xml

<style name="Theme.Styled" parent="@style/Theme.AppCompat.Light">
    <!-- Setting values in the default namespace affects API levels 7-13 -->
    <item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>
</style>

<style name="Widget.Styled.ActionBar" parent="@style/Widget.AppCompat.Light.ActionBar">
    <!-- Setting values in the default namespace affects API levels 7-13 -->
    <item name="background">#FFFFFF</item>
</style>

更多细节

http://android-developers.blogspot.in/2013/08/actionbarcompat-and-io-2013-app-source.html

请注意API级别14的更改

<item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item>

到API级别7-13

<item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>

Android BROWSABLE意向API级别

Android BROWSABLE意向API级别

在Android 2.3(API级别10)和更早版本上,是否有不同的步骤将Android活动注册为可浏览的意图?

我已经使用使用自定义方案的意图过滤器设置了一个Activity:

<intent-filter>
    <action name="android.intent.action.VIEW"/>
    <category name="android.intent.category.DEFAULT"/>
    <category name="android.intent.category.broWSABLE"/>
    <data scheme="@string/myCallbackProtocol"/>
</intent-filter>

在运行2.3且SDK模拟器设置为2.3的物理设备上,浏览器应用程序使用我的自定义协议将链接定向到该应用程序.

但是,如果我将模拟器缩小到2.2或2.1,则浏览器不会重定向,而是指示找不到服务器.我没有运行这些API级别的实际设备.

我想发布我的应用程序,使其与运行2.1及更高版本的设备兼容.我以为这应该是可能的吗?根据Android docs Intent.CATEGORY_broWSABLE从1.0开始可用.

谢谢!

解决方法:

我使用broWSABLE没有问题,至少可以追溯到2.1.但是,我尚未实现自定义方案,更不用说在字符串资源中定义了一个. Here is a sample project演示了broWSABLE的使用.

Android Calendar Provider API级别

Android Calendar Provider API级别

我们正在开发一个Android日历应用程序.问题是我们想获取其他日历的事件并与其他人共享我们的事件.如我所读,这是由内容提供商实现的.

问题是日历内容提供者要求的API级别是API 14,我们需要在API 7(Android 2.1)中使用它.我见过在Android 2.1中可以做到这一点的应用程序.

我们如何实现这一目标?

解决方法:

日历提供者在那里,但是在API级别14之前API不公开,并且权限可能因设备而异.以下是一些示例:Is there a way to access the calendar’s entries without using gdata-java-client?

Android Call需要API级别13(当前最小值为10):android.view.Display #getSize

Android Call需要API级别13(当前最小值为10):android.view.Display #getSize

我试图尽可能多地定位架构,并尽可能少地发出警告.

Point dims = new Point();
if (android.os.Build.VERSION.SDK_INT >= 13) {
      mWindowManager.getDefaultdisplay().getSize(dims);
} else if (android.os.Build.VERSION.SDK_INT < 13) {
  dims.x = mWindowManager.getDefaultdisplay().getWidth();
  dims.y = mWindowManager.getDefaultdisplay().getHeight();
}

但这给了我错误和警告:

Call requires API level 13 (current min is 10): android.view.display#getSize
The method getWidth() from the type display is deprecated

They say to change the manifesto(或here)但为什么上面这个不适用于编译器?难道我不能摆脱10到18的api范围吗?

解决方法

您已经对SDK版本进行了检查,因此可以忽略编译器的弃用警告和有关新API的lint警告.

将代码段拉到单独的方法并向其添加以下注释:

@TargetApi(13)
@SuppressWarnings("deprecation")

请注意,if的if部分是多余的.简单的其他就够了.

关于为Android项目选择ORM最低API级别7的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于Android AppCompat需要API级别11、Android BROWSABLE意向API级别、Android Calendar Provider API级别、Android Call需要API级别13(当前最小值为10):android.view.Display #getSize的相关信息,请在本站寻找。

本文标签: