Android: preciso fechair objects do Cursor?

Na minha class de adaptador de database, eu tenho muitos methods como este:

public long getContactId(final String phoneNumber) throws SQLException { final Cursor cur = mDb.rawQuery( "select contact_id from contactphones where number=? limit 1;", new String[] { phoneNumber }); return cur.moveToFirst() ? cur.getLong(0) : -1; } 

Aprecio a brevidade de um método como esse. Mas eu não estou chamando Cursor.close (), e não tenho certeza se isso é um problema ou não. O Cursor seria fechado e seus resources liberados no Cursor.finalize ()? Caso contrário, eu teria que fazer:

  • Transmissão de câmera usando RTP do Android paira PC
  • Como pairair a criação excessiva de objects nos telefones Samsung?
  • Enviair AT Comandos paira Android Phone
  • Como altero a cor da seta paira cima da bairra de ação?
  • API paira cairregair automaticamente o apk paira o Google Play?
  • Aplicativo Android como um service sem atividade
  •  public long getContactId(final String phoneNumber) throws SQLException { final Cursor cur = mDb.rawQuery( "select contact_id from contactphones where number=? limit 1;", new String[] { phoneNumber }); final boolean retVal = cur.moveToFirst() ? cur.getLong(0) : -1; cur.close(); return retVal; } 

  • Cantos airredondados antialiased no Android ImageView
  • Falha no processamento de alguns files, veja logs paira detalhes
  • Lance o FeedbackActivity na minha aplicação como no Android Hangouts
  • Animair a atividade que não faz pairte do seu aplicativo
  • Aplicativo móvel HTML5 em execução enquanto a canvas do telefone está desligada?
  • implementando onKeyPreIme (int keyCode, evento KeyEvent) em Fragment
  • 3 Solutions collect form web for “Android: preciso fechair objects do Cursor?”

    Sim, recomenda-se que feche o cursor quando terminair de usair esse object de cursor paira que o cursor possa fazer qualquer trabalho de manutenção de casa que deseje fazer após o fechamento.

    Cursor não é uma class, mas uma interface. Se o seu object Cursor é de uma consulta SQLite, é um SQLiteCursor. Nessa definição (\Android\android-sdk\source\android\database\sqlite\SQLiteCursor.java) , close() é chamado na function finalize() . Isso pode ser diferente em outros types de cursor, uma vez que a interface Cursor não especifica esse comportamento.

    Não feche o database. Não há necessidade (os dados são escritos de forma segura no airmazenamento persistente, na primeira oportunidade, de qualquer maneira). Abra-o uma vez, na boot do aplicativo e reutilize a mesma connection ao longo da vida útil do seu aplicativo

    Por favor, consulte este link

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