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

时间:2012-03-26 14:07:58

标签: android android-contentprovider

我们知道应用程序运行时内容提供程序加载。但我希望在内容提供商推出之前进行一些操作。我怎么抓住这个手术?在调用内容提供者的onCreate方法之前

3 个答案:

答案 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}}自然而然地做到的。