可以从ContentProvider.onCreate()启动服务吗?

时间:2010-02-07 08:53:40

标签: android

更新后的我的应用程序需要在服务器上找到一些数据填充其ContentProvider。 我发现从ContentProvider.onCreate()方法启动服务有效,但我不确定这是一个好主意还是随机工作。

我不知道android中应用程序的初始化。在创建内容提供商之前,服务是否始终可用?

2 个答案:

答案 0 :(得分:0)

有了更多详情,您会收到更准确的答案,但假设您的服务与您的ContentProvider相关联,则可以。

如果您的服务是在ContentProvider的{​​{1}}内调用的,那么它就可以使用了。但是,如果未调用onCreate,则该方法内部创建的任何内容都将无法使用。

答案 1 :(得分:0)

嗯......理论上它应该没问题,但我问自己为什么需要服务。对我来说,服务是在后台运行的,执行一些任务,也可以使您的应用程序与服务器的最新数据保持同步。

如果我理解正确并且您实施了自己的内容提供商,我认为您必须在某些活动/服务查询内容提供商时从服务器获取数据,无论如何。那不是更合适和资源温和吗?

  

我不知道初始化了   android中的应用程序。是的   服务始终可用   在内容提供商之前   创建

Android应用程序通常设计为模块化,这也是为什么您可以与其他应用程序共享应用程序的活动或实际调用 - 例如 - Android设备的SMS发件人活动的原因。因此,在普通的桌面应用程序中,您可能不习惯使用Main(),而是使用Android操作系统调用onCreate()来调用活动的开始。

我可以想象的最接近桌面应用程序中Main()的唯一入口点是覆盖Android Application类并在清单文件中正确注册

public class AndroidApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
    }

    @Override
    public void onLowMemory() {
        super.onLowMemory();
    }

    @Override
    public void onTerminate() {
        super.onTerminate();
    }
}

和您的清单

<application android:name=".main.AndroidApplication" android:icon="@drawable/icon" android:label="@string/app_name">
...
</application>

这里有你的onCreate(),这是你应用启动时调用的第一个方法。但是我仍然会注意你要在那里初始化的东西。您应该始终只是初始化并加载您真正需要的那些资源。