2012-03-26 16 views

Respuesta

24

Creo que he encontrado una solución. He creado mi clase de aplicaciones personalizadas y el método attachBaseContext reemplazado

<application android:name=".ApplicationController" ...> 

public class ApplicationController extends Application { 
    @Override 
    protected void attachBaseContext(Context base) { 
     super.attachBaseContext(base); 

     // some of your own operations before content provider will launch 
    } 
} 
+2

Eso puede funcionar en este momento, pero no sé si será confiable en todas las versiones. – CommonsWare

+0

Su supervivencia a través de 17 apis)) Tal vez en la función Google nos proporcione cualquier apis para esta operación, pero por ahora funciona. ¡Gracias por tu respuesta! – pleerock

+1

Esta solución funciona, pero no es completamente funcional. Por ejemplo, el método 'Context.getMainLooper()' devuelve 'null' cuando se llama antes' Application.onCreate() '. – Michael

10

Pero quiero hacer algunas operaciones antes proveedor de contenido lanzará ... Antes método onCreate del proveedor de contenido sería llamado

yo sepa, eso no es posible. onCreate() de su ContentProvider será la primera oportunidad que tenga de ejecutar código, momentos después de que se bifurque su proceso. Eso ocurre incluso antes de que onCreate() se llame en Application, si entiendo correctamente.

+0

es muy triste. Intenté anular la creación de la aplicación, pero parece que el proveedor de contenido también se carga en la creación de la aplicación. Gracias por su respuesta. – pleerock

3

Mi solución requiere el uso de la API call(Uri, String, String, Bundle) (así, no es totalmente compatible con versiones anteriores). Pero tengo las cosas que quiero que prepare el ContentProvider antes de que se use en mi anulación de ese método call. Luego hago getContentResolver().call(BASE_URI, METHOD, null, Bundle.EMPTY) en mi Application.onCreate(). Básicamente, difiere esas cosas hasta que se haya creado mi Application, que es lo que esperábamos que ContentProvideronCreate hiciera de forma natural.

Cuestiones relacionadas