2013-10-20 126 views
0

我有一些關於android編程習慣的問題,因爲我在網上找到的一些教程/帖子(也在stackoverflow中)已經過時了。它們大部分來自2010年,2011年以及關於Android 2.1/2.2的討論。Android幾個問題

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年開始,我想知道又是什麼讓今天的唯一ID的最佳方式?它是ANDROID_ID嗎?並且在你問爲什麼我需要唯一標識符之前,我可以告訴你這是產品許可證,並根據ID註冊該許可證。

3) -我應該在打開它之前在Intents中使用標誌嗎?如果是這樣,爲什麼? 我通常只做這段代碼:

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

謝謝你們。

+1

你應該真的問單獨的問題作爲單獨的問題。這將使人們能夠提供個人問題的答案,他們無法回答你所問的所有問題。 –

回答

3

我的問題是:它沒有問題關閉數據庫的連接,在這種情況下,100倍?

首先,這是低效的。請打開數據庫一次。第二,如果你打算從你的應用中的多個點使用數據庫,特別是如果涉及多個線程的話,爲了線程安全,你需要有一個單獨的實例SQLiteDatabase,每個人都共享一個實例。通常情況下,這真的是一個單身實例SQLiteOpenHelper,您可以根據需要從中獲取數據庫。

我想知道那麼今天獲得唯一ID的最佳方式是什麼?

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

我應該在打開它之前在Intents中使用標誌嗎?

「在打開它之前」是沒有必要的。在使用Intent之前,標記可以隨時添加到Intent

我通常只做這段代碼

這可能是罰款。如果您需要這些標誌,請使用標誌。

+0

1) - 在每個教程中,這就是如何插入,我從來沒有看到db.open() 2) - 我不知道這將如何幫助我。如何通過識別應用程序安裝來創建唯一的ID? 3)-kk。 – user2742861

+0

@ user2742861:「在每個教程中,插入都是這樣完成的」 - 是嗎?僅僅因爲這些教程效率低下並不意味着你應該低效地做事。 「如何通過識別應用程序安裝來創建唯一的ID?」 - 您可能希望點擊超鏈接並閱讀博文。 – CommonsWare