我有一些关于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) - 正如您在本主题Is there a unique Android device ID?中所看到的,日期是从2010年开始的。我想知道今天获取唯一身份证的最佳方式是什么?它是ANDROID_ID吗?在您询问我为什么需要唯一标识符之前,我可以告诉您这是产品许可证,并根据ID注册该许可证。
3) - 我应该在打开它之前在Intents中使用标志吗?如果是这样,为什么? 我通常只做这段代码:
Intent A = new Intent(MainActivity.this, OtherActivity.class);
startActivity(A);
谢谢你们。
答案 0 :(得分:3)
我的问题是:它没有关闭数据库连接的问题,在这种情况下,100次?
首先,这是低效的。请打开数据库一次。
其次,如果您打算在应用程序中的多个点使用数据库,特别是如果涉及多个线程,则需要为每个人共享一个SQLiteDatabase
的单例实例,以确保线程安全。通常情况下,这真的是SQLiteOpenHelper
的单例实例,您可以根据需要从中获取数据库。
我想知道今天获取唯一ID的最佳方法是什么?
最好的方法是不要尝试。相反,create unique IDs per app installation。
我应该在打开它之前在Intents中使用标志吗?
“打开之前”没有必要。在使用Intent
之前,可以随时将标志添加到Intent
。
我通常只做这段代码
这可能没问题。如果您需要这些标志,则使用标志。