我们知道应用程序运行时内容提供程序加载。但我希望在内容提供商推出之前进行一些操作。我怎么抓住这个手术?在调用内容提供者的onCreate方法之前
答案 0 :(得分:28)
我想我找到了解决方案。我创建了自定义应用程序类并重写了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
}
}
答案 1 :(得分:11)
但我希望在内容提供商启动之前进行一些操作......在调用内容提供商的onCreate方法之前
AFAIK,这是不可能的。您的onCreate()
的{{1}}将是您在进程分叉后立即运行代码的第一个机会。即使在ContentProvider
上调用onCreate()
之前,如果我理解正确,也会发生这种情况。
答案 2 :(得分:3)
我的解决方案需要使用call(Uri, String, String, Bundle)
API(因此,它不是完全向后兼容的)。但是在我使用ContentProvider
方法的覆盖之前,我想要call
准备好的东西。然后我在getContentResolver().call(BASE_URI, METHOD, null, Bundle.EMPTY)
中Application.onCreate()
。从本质上讲,它会推迟我创建Application
后的内容,这正是我们期望ContentProvider
的{{1}}自然而然地做到的。