2010-02-09 17 views
42

¿Hay algún evento/receptor o algo para manejar la primera ejecución después de la instalación o directamente después de la instalación? ¿O lo necesito emular con preferencias?¿Hay un evento de instalación en Android?

+0

Estoy escribiendo un servicio. No tiene GUI. ¿Cómo puedo programar el servicio para que se ejecute diariamente? (Parece que no puedo, porque parece que no puedo ejecutar código directamente después de la ejecución.) Solo se instalará manualmente, por lo que se podría usar adb, pero esto parece innecesario. – user2768

Respuesta

47

Existe el intento de difusión ACTION_PACKAGE_ADDED, pero la aplicación que se está instalando no recibe esto.

Por lo tanto, comprobar si se establece una preferencia es probablemente la solución más fácil.

SharedPreferences p = PreferenceManager.getDefaultSharedPreferences(this); 
boolean firstRun = p.getBoolean(PREFERENCE_FIRST_RUN, true); 
p.edit().putBoolean(PREFERENCE_FIRST_RUN, false).commit(); 
+0

Gracias ¡mucho! Estaba buscando esa intención, tengo un servicio que debe tener conocimiento actualizado de los paquetes instalados cada segundo, con esta intención puedo guardarlo en caché hasta que ocurra un cambio. –

1

No creo que exista tal cosa, y no creo que sea una buena idea: generalmente debe manejar no solo instalaciones sino algunas actualizaciones (por ejemplo, una nueva versión con características) o inicialización adecuada de algunos recursos.

Para los recursos, la mejor manera es verificarlos directamente.

Para la versión, uso la base de datos, es muy fácil.

+0

He dado motivación (es decir, una razón por la cual esta sería una buena idea) más arriba: http://stackoverflow.com/questions/2227604/is-there-on-install-event-in-android#comment55110087_2227604 – user2768

1

Se llama al método OnUpgrade de SQLiteOpenHelper cuando se cambia la versión de la base de datos. Supongo que esto podría usarse para hacer otras cosas aparte de manejar el nuevo esquema.

+6

Lo siento por necroposting, pero creo que solo hay algo apropiado que hacer allí: manejar el nuevo esquema. Refiriéndose al Principio de Responsibilidad Única de SOLID y al sentido común. Solo en caso de que alguien lo vea. –

+0

Esto se invocará cada vez que cambie la versión de la base de datos, por lo que no es un buen lugar para hacerlo. – dramzy

Cuestiones relacionadas