在使用单例应用程序类时使用Sugar ORM

时间:2014-02-21 15:33:27

标签: orm

我扩展了Android.Application类,以便我可以保持状态(使用应用程序作为单例)。

但是,我现在想要使用Sugar ORM库来简化我的数据库访问,但Sugar文档(http://satyan.github.io/sugar/getting-started.html)要求我在AndroidManifest.xml中指定'SugarApp'作为我的应用程序类。

与我的扩展Android应用程序的Application类冲突。

有替代方法吗?

来自Sugar docs:

E.g。通过更改应用程序标记的android:name属性。

<application android:label="@string/app_name" android:icon="@drawable/icon"
android:name="com.orm.SugarApp">
.
.
<meta-data android:name="DATABASE" android:value="sugar_example.db" />
<meta-data android:name="VERSION" android:value="2" />
<meta-data android:name="QUERY_LOG" android:value="true" />
<meta-data android:name="DOMAIN_PACKAGE_NAME" android:value="com.example" />
.
.
</application>

2 个答案:

答案 0 :(得分:57)

回答我自己的问题 - 但是啧啧; - )

这很简单,我只是改变了我的自定义应用程序类来扩展SugarApp而不是Android.Application,因为SugarApp本身扩展了Android应用程序!

答案 1 :(得分:10)

如果你看一下SugarApp类,你会发现它扩展了Application类,覆盖了onCreate()&amp; onTerminate()方法做脚手架:

@Override
public void onCreate() {
    super.onCreate();
    SugarContext.init(this);
}

@Override
public void onTerminate() {
    super.onTerminate();
    SugarContext.terminate();
}

如果要保留基本应用程序类,则唯一需要做的就是将这些方法调用添加到自定义类中。

通过这种方式,您可以维护自定义应用程序类,而不是扩展SugarApp类。