正如我们所知,内容提供程序在应用程序运行时加载。但我想在内容提供商启动之前进行一些操作。如何捕获此操作?在调用内容提供程序的 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
被创建之后,这是我们期望ContentProvider
的onCreate
自然而然地做的事情。