Android几个问题

时间:2013-10-20 18:37:14

标签: android

我有一些关于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);

谢谢你们。

1 个答案:

答案 0 :(得分:3)

  

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

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

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

  

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

最好的方法是不要尝试。相反,create unique IDs per app installation

  

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

“打开之前”没有必要。在使用Intent之前,可以随时将标志添加到Intent

  

我通常只做这段代码

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