2011-06-15 31 views
1

問題我有一個應用程序,我在SQLIte數據庫中存儲一些數據。 而我試圖做的是讓我的數據庫在我的應用程序的開始只打開一次,然後使用我的數據庫的同一個實例。瞭解如何使用數據庫SQLite

這個想法不是在我需要的每一個活動中打開我的數據庫。

一個我得到的解決方案是這樣的,創建一個擴展應用的類,然後打開數據庫有:

這是怎樣的代碼看起來像:

public class MyApplication extends Application{ 

private static DBAdapter db; 

public void onCreate() 
{ 

    db=new DBAdapter(getApplicationContext()); 
    db.createDatabase(); 
    db.openDataBase(); 
} 

public static DBAdapter getDatabaseAdapter() 
{ 
    return db; 
} 

}

所以在我的應用程序的每一個活動,我需要連接我的DB我做類似:

MyApplication myApplication = (MyApplication) this.getApplication(); 
DBAdapter db= myApplication.getDatabaseAdapter(); 

但我不是很肯定,如果我DB在得到我的應用程序開始時只開了......或者它被打開,每次我這樣做:

MyApplication myApplication = (MyApplication) this.getApplication(); 

或者,如果任何人有一個更好的解決方案,請告訴我:)。感謝ü

回答

1

將只有一次,因爲你是在應用程序類的onCreate方法,這將在應用程序啓動被稱爲調用它打開,在創建任何其他應用程序對象之前。你可以看看我的一個項目是link

希望得到這個幫助。

編輯:關於應用程序類:Android會自動創建該類的一個實例,並使其可用於整個應用程序。您可以使用Context.getApplicationContext()從任何上下文訪問它。所以將只有一個應用程序實例將被共享。

+0

確定....但我應該關閉後援收盤應該在我的app.But年底從那裏我知道我的應用程序ANDS?任何想法 – adrian 2011-06-15 17:33:29

+0

在主要活動的onPause方法我檢查[ isFinishing](http://developer.android.com/reference/android/app/Activity.html#isFinishing())如果它是真的我關閉數據庫。不知道這是做到這一點的正確方法,但對我有用。 – Gopal 2011-06-15 17:37:52

+0

aha ... ok.t​​hx ...你有我的接受:) – adrian 2011-06-15 17:47:10

0

您的方法的替代方案可以是製作一個SingleTon類,您可以在該類中保留對打開的db連接的引用,以便可以重用它。

因爲對於任何android應用程序來說,只有單一的applcation類的實例遍佈所有的活動,所以你的db只能在android應用程序的開始時打開。