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

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

问题描述:

更新后,我的应用程序需要使用服务器上的一些数据填充它的ContentProvider。 我发现从ContentProvider.onCreate()方法启动一个服务可行,但我不确定这是一个好主意还是随机工作。可以从ContentProvider.onCreate()启动服务吗?

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

有了更多详细信息,您将收到更准确的答案,但假设您的服务与您的ContentProvider相关联,那就没问题。

如果您的服务在ContentProvideronCreate中被调用,那么它将可用。但是如果您的onCreate未被调用,那么在该方法内创建的任何内容都将不可用。

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

如果我正确地理解了你并且实现了你自己的内容提供者,那么我会假设你只是在你的内容提供者被某个活动/服务查询时从服务器获取你的数据。这不是更合适和资源温和吗?

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

Android应用程序通常被设计成模块化的,这也是为什么,例如,你可以与其他应用程序共享您的应用程序的活动或实际调用 - 例如 - 你的Android设备的手机短信发送者的活动。因此,在正常的桌面应用程序中您可能已经习惯了Main(),但您可以使用Android OS调用的onCreate()来调用Activity的开始。

唯一的入口点我能想象,在桌面应用程序是最近一个main()是覆盖Android应用程序类,并在您的清单文件

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()这是在你的应用程序启动时调用的第一种方法。但是我仍然会注意你要在那里初始化什么。你应该总是初始化并加载你真正需要的资源。

+0

我已经有了保持数据更新的服务。 但是,如果应用程序得到更新,我需要一种方法来强制更新服务在预定时刻之前完成其工作。 – Tughi 2010-02-07 12:19:05