【问题标题】:Update memory model from Service从服务更新内存模型
【发布时间】:2011-07-25 18:01:35
【问题描述】:

我计划编写一个 IntentService 来下载新包(应用程序的新项目)。我唯一的问题是,当我广播下载结束时,如果应用程序正在运行,我必须更新内存模型。如果它没有运行,则无需执行任何操作,因为应用程序将在启动时从数据库创建内存模型。在性能方面,UI 是从内存中工作的,而不是从数据库中工作的。 知道我应该如何接近,还是我完全走错了路?

编辑:为了清楚起见:假设我有 MyIntentService,它将新行插入我的数据库,然后触发一个由 MyBroadcastReceiver 接收的 BroadcastIntent。现在我面临的问题是,MyBroadcastReceiver 的实例应该以某种方式通知 Model 类,它是一个单例。问题是,这个模型(单例)实例只有在我的应用程序正在运行时才应该可用,因为它只被 UI 使用(只使用 DB 会很慢)。如果没有 UI 可以使用它,则无需通知我的模型实例。我不能让我的模型成为广播接收器,因为它们随时都会启动,而且它们也不能是单例的(据我所知)。

【问题讨论】:

    标签: android service broadcastreceiver intentservice


    【解决方案1】:

    我通过将 UI 注册为广播接收器并根据需要更新模型来解决此问题。在我的解决方案中,如果 UI 存在,模型将始终被实例化。

    另一种解决方案是检查模型是否已实例化,如果是则仅继续。

    【讨论】:

    • 我正在使用一个观察者,所以我知道是否有一个注册的 UI 组件活着。我没有使用 BroadcastReceiver,但方法类似。
    【解决方案2】:

    回答和说一些只有你的话没有代码的东西有点困难。可能会在您的项目中创建额外的独立部分,这些部分将从 DB 初始化/创建您的“内存模型”,这部分应该是不依赖的,因此您可以随时随地使用它,在启动活动/应用程序期间或在广播时使用它。

    【讨论】:

    • 很公平,我应该更详细一点。请查看我的编辑。
    猜你喜欢
    • 1970-01-01
    • 2019-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    • 2012-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多