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 个此类变量。不会影响应用性能吗?因为这些是静态变量。
任何帮助将不胜感激....
好吧,它们public或private-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 将使用相对便宜的“字符串常量”指令,而不是字段查找。