2015-04-25 6 views
1

Я хочу открыть database один раз только с главного экрана моего приложения, и я хочу использовать этот экземпляр в любом месте любого из activity. Возможно ли это, или я должен сделать context для каждого фактического открытия activity, чтобы я должен создать экземпляр базы данных (открыть) в каждом activity?Должен ли контекст SQLiteOpenHelper всегда работать?

+0

Сделайте это из подкласса Service или Application (ApplicationContext), таким образом, вы будете иметь соединение и блокировку/синхронизацию, доступные в любой деятельности –

+0

, можете ли вы объяснить более четко? – pheromix

ответ

3

Возможно ли это или я должен сделать контекст быть каждый фактический открыт активность, так что я должен создать экземпляр базы данных (открытого) в каждой деятельности?

возможно, и вы можете использовать контекст приложения. Ваш DBHelper может быть синглом. Например

public class DBHelper extends SQLiteOpenHelper { 

    private static DBHelper sInstance; 
    public static synchronized DBHelper getInstance(Context context) {  
    if (sInstance == null) { 
     sInstance = new DBHelper(context.getApplicationContext()); 
    } 
    return sInstance; 
    } 

    private DBHelper(Context context) { 
    super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 

} 
+0

не использовался ... * посмотрите ближе * –

3

Вам не нужно, чтобы закрыть и повторно открыть соединение SQL на каждый отдельный Activity.

Сказав это - лучше всего открыть соединение, используя контекст приложения, чтобы избежать Activity leaks.

Вы можете получить контекст контекста приложения quite easily.

Смежные вопросы