0

我有几个关于 android 编程实践的问题,因为我在网上(也在 stackoverflow 中)找到的一些教程/帖子已经过时了。他们大多是从 2010 年、2011 年开始谈论 Android 2.1/2.2。

1) -数据库关闭:假设我有一个循环,它将根据该循环插入/更新值。数据库的常见插入功能启动数据库,打开数据库,插入其内容并关闭数据库。

public void addProduct(Product product) {
        ContentValues values = new ContentValues();
        values.put(COLUMN_PRODUCTNAME, product.getProductName());
        values.put(COLUMN_QUANTITY, product.getQuantity());

        SQLiteDatabase db = this.getWritableDatabase();

        db.insert(TABLE_PRODUCTS, null, values);
        db.close();
}

在我的活动中,我将执行以下操作:

DatabaseHandler db = new DatabaseHandler(this);
for(int i = 0; i <= 100; i++){
   Product product = 
   new Product("example", i + 10);
   db.addProduct(product);
}

那么我的问题是:关闭数据库连接没有问题,在这种情况下,100次?

2) -正如您在本主题中看到的那样,是否有唯一的 Android 设备 ID?,日期是 2010 年。我想知道今天获得唯一 ID 的最佳方法是什么?是 ANDROID_ID 吗?在您问我为什么需要唯一标识符之前,我可以告诉您这是针对产品许可证并根据 ID 注册该许可证。

3) -我应该在打开 Intents 之前使用标志吗?如果是这样,为什么?我通常只做这段代码:

Intent A = new Intent(MainActivity.this, OtherActivity.class);
startActivity(A);

多谢你们。

4

1 回答 1

3

那么我的问题是:关闭数据库连接没有问题,在这种情况下,100次?

首先,这是低效的。请打开数据库一次。

其次,如果您打算从应用程序中的多个点使用数据库,特别是如果涉及多个线程,您需要有一个SQLiteDatabase每个人都共享的单例实例,以确保线程安全。通常,这最终会成为 的单例实例SQLiteOpenHelper,您可以根据需要从中获取数据库。

我想知道今天获得唯一 ID 的最佳方法是什么?

最好的办法是不要尝试。相反,为每个应用安装创建唯一 ID

我应该在打开它之前在 Intents 中使用标志吗?

“就在打开之前”不是必需的。可以在使用Intent之前的任何时间添加标志Intent

我通常只做这段代码

那可能没问题。如果您需要这些标志,则使用标志。

于 2013-10-20T18:46:47.970 回答