2011-03-22 10 views
6

Comprensible esta pregunta es un poco subjetiva, pero creo que hay una respuesta concreta.¿Cuánto manejo de ciclo de vida de Android es demasiado?

que tienen una muy pequeña actividad que no hace más que mostrar algunos datos al usuario en un ListActivity. Los datos que utilizo proviene de la base de datos SQLite de la aplicación y me encuentro haciendo esto

public class MainActivity extends ListActivity{ 
    private DatabaseAdapter dbHelper; 
    @Override 
    public void onCreate(Bundle b){ 
      dbHelper = new DatabaseAdapter(this); 
      super.onCreate(b); 
    } 

    @Override 
    public void onResume(){ 
      dbHelper.open(); 
      fill_data();//a small method that uses dbHelper to setListAdapter 
      super.onResume(); 
     } 

    @Override 
    public void onPause(){ 
      dbHelper.close(); 
      super.onPause(); 
    } 

    private void fill_data(){/*makes use of dbHelper */ } 

Se trata sólo de código en gran medida innecesaria? Me gustaría manejar los ciclos de vida para poder utilizar la menor cantidad de recursos cuando MainActivity no está en la parte superior, pero al mismo tiempo, toda esta actividad se puede hacer en onCreate().

Respuesta

5

Usted probablemente podría salirse con la no sustitución del método onPause Si acaba de abrir y cerrar el dbHelper cada vez que lo utilice. No es tan difícil abrir el helper (supongo que SQLiteOpenHelper), por lo que podría considerarlo una optimización prematura.

En cualquier caso, casi siempre tendrá que anular la opción Crear, a menudo anular en Reanudar y, a veces, anular enParar. Lo importante es cuando el marco llama a las diferentes devoluciones de llamada y lo que tiene que hacer en ellas.

Si necesita hacer algo cuando su actividad llega al primer plano o si desea hacer algo en su Looper de actividad (por ejemplo, actualizaciones de ubicación), tendrá que anular en Reanudar. Si necesita limpiar después de usted, tendrá que implementar OnPause.

por lo general no implementan OnDestroy, ya que no se garantiza que se llama.

0

En realidad, probablemente mejor simplemente abren y se cierran cuando se necesita la base de datos. Aunque no afecta su caso, algunos teléfonos (Samsung Galaxy S) pueden tener bases de datos muy lentas y tener múltiples conexiones abiertas (por ejemplo, en una actividad y servicio) realmente ralentiza las cosas ... (¡vi 1s veces de escritura!)

Cuestiones relacionadas