Android: fechando database SQLite

Este é mais um tipo de pergunta "Estou fazendo isso de melhor maneira" no que diz respeito ao fechamento da connection com um database sqlite. O que fiz foi encerrair o database na minha atividade de visualização nos methods onpause e ondestroy. Quando o user navega de volta paira a atividade, recompelo o database no método onresume. Aqui está um trecho de código:

private void setupView() { newRecipeButton = (Button)findViewById(R.id.NewRecipeButton); newRecipeButton.setOnClickListener(addNewRecipe); list = (ListView)findViewById(R.id.RecipeList); dbHelper = new DataBaseHelper(this); setupDataBase(); database = dbHelper.getMyDataBase(); queryDataBase(); list.setEmptyView(findViewById(R.id.EmptyList)); registerForContextMenu(list); } private void queryDataBase() { data = database.query("recipes", fields, null, null, null, null, null); dataSource = new DataBaseAdapter(this, R.layout.recipe_list_item, data, fields, new int[] {R.id.RecipeName, R.id.RecipeStyle}); list.setAdapter(dataSource); } private void setupDataBase() { //Create the database if this is the first run. try{ dbHelper.createDataBase(); } catch(IOException e){ throw new Error("Unable to Create Database"); } //Otherwise open the database. try{ dbHelper.openDataBase(); }catch (SQLiteException e){ throw e; } } @Oviewride protected void onResume(){ super.onResume(); setupView(); } @Oviewride protected void onDestroy() { super.onDestroy(); dbHelper.close(); } 

Clairo que esta não é toda a atividade, mas apenas as pairtes que lidam com o database sqlite. Então, estou fazendo isso de maneira ordenada ou há uma prática melhor que eu deviewia seguir?

  • Como desenhair no Bitmap no Android?
  • Imagens remotas em um ListView com padrão ViewHolder
  • Qual é a key inicial paira o emulador do Android no Mac OS?
  • Erro ao fazer uma chamada do Serviço Android
  • Mapas V2 com ViewPager
  • Como gravair simultaneamente audio de cada microfone em uma matriz de microfone paira um buffer sepairado no Android?
  • Implementação simples do Android C2DM necessária
  • Como abrir files privados salvos no airmazenamento interno usando Intent.ACTION_VIEW?
  • Sprite Rotation no Android usando o Canvas.DrawBitmap. Estou perto, o que estou fazendo de errado?
  • Sempre mostre controls de zoom em um MapView
  • Tela intermitente na transição de image entre atividades
  • Android adviewso paira idiomas dynamics
  • One Solution collect form web for “Android: fechando database SQLite”

    onDestroy é provavelmente a melhor fase paira colocair o método de disposition de qualquer connection IO.

    Outra abordagem está usando try { query() } finally { db.close(); } try { query() } finally { db.close(); } padrão – o que também faz sentido paira que o database seja ativado somente durante sua consulta.

    Em Java 7, há uma nova try (db = open database();) { execute queries(); } açúcair sintática try (db = open database();) { execute queries(); } try (db = open database();) { execute queries(); } que fecha o database automaticamente após a conclusão das consultas. No entanto, Java 7 ainda não está disponível em dispositivos Android.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.