SQLiteOpenHelper android中变量的可见性

pio*_*wna 5 database sqlite android

为什么在 SQLiteOpenHelper 类中的所有演示和教程中,变量总是:public static final

看一看:

    public static final String ORDER_ID = "order_id";
    public static final String ORDER_LOGIN_NAME = "login_name";
    public static final String ORDER_RESTO_U_NAME = "resto_uniqe_name";
Run Code Online (Sandbox Code Playgroud)

我的问题是:我正在制作一个应用程序,它的数据库太大了。因此,我将不得不至少制作 60-70 个此类变量。不会影响应用性能吗?因为这些是静态变量。

任何帮助将不胜感激....

nik*_*kis 4

好吧,它们publicprivate-protectedpackage取决于您的需求,但这final static是根据 Android 指南声明常量的好方法,请查看此处的解释:http://developer.android.com/training/articles/perf-tips。 html#UseFinal

考虑类顶部的以下声明:

static int intVal = 42;
static String strVal = "Hello, world!";
Run Code Online (Sandbox Code Playgroud)

编译器生成一个名为 的类初始值设定项方法,该方法在首次使用该类时执行。该方法将值 42 存储到 intVal 中,并从类文件字符串常量表中提取 strVal 的引用。当稍后引用这些值时,将通过字段查找来访问它们。

我们可以使用“final”关键字来改进问题:

static final int intVal = 42;
static final String strVal = "Hello, world!";
Run Code Online (Sandbox Code Playgroud)

该类不再需要方法,因为常量进入 dex 文件中的静态字段初始值设定项。引用 intVal 的代码将直接使用整数值 42,而访问 strVal 将使用相对便宜的“字符串常量”指令,而不是字段查找。