如何捕获内容提供程序初始化



正如我们所知,内容提供程序在应用程序运行时加载。但我想在内容提供商启动之前进行一些操作。如何捕获此操作?在调用内容提供程序的 onCreate 方法之前

我认为

我找到了解决方案。我创建了我的自定义应用程序类并重写了 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
    }
}

我的解决方案需要使用 call(Uri, String, String, Bundle) API(因此,它不完全向后兼容(。但是我有我希望ContentProvider在覆盖该call方法之前准备的东西。然后我在我的Application.onCreate()里做getContentResolver().call(BASE_URI, METHOD, null, Bundle.EMPTY).从本质上讲,它将这些东西推迟到我的Application被创建之后,这是我们期望ContentProvideronCreate自然而然地做的事情。

最新更新