Подтвердить что ты не робот

Как я могу поймать инициализацию провайдера контента?

Как мы знаем, контент-провайдер загружается при запуске приложения. Но я хочу сделать некоторые операции перед запуском контент-провайдера. Как поймать эту операцию? До того, как метод contentCreate будет доступен

4b9b3361

Ответ 1

Я думаю, что я нашел решение. Ive создал мой собственный класс приложения и переопределенный метод attachBaseContext

<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

Но я хочу сделать некоторые операции до того, как поставщик контента запустится... До того, как поставщик контента будет создан метод onCreate

AFAIK, это невозможно. onCreate() вашего ContentProvider будет первой возможностью, которую вы должны запустить код, моменты после разворота процесса. Это происходит еще до того, как onCreate() вызывается на Application, если я правильно понимаю.

Ответ 3

Мое решение требует использования API call(Uri, String, String, Bundle) (поэтому он не полностью обратно совместим). Но у меня есть материал, который я хочу подготовить ContentProvider, прежде чем он будет использован в моем переопределении этого метода call. Тогда я getContentResolver().call(BASE_URI, METHOD, null, Bundle.EMPTY) в моем Application.onCreate(). По сути, он откладывает этот материал до тех пор, пока не будет создан мой Application, что мы ожидали от ContentProvider onCreate. Естественно.