0

我想让我的所有活动(7 到 10 个不同的屏幕)将数据提交给“控制器”(如果我错过了使用该术语,请见谅)。

内部所述控制器数据将被上传或保存到数据以在没有互联网时上传。
控制器将进行检查和处理,例如:

  • 检查有效会话。
  • 在上传等之前附加其他需要的凭据。会话/用户数据将存储在控制器引用的共享首选项文件中。

我的目标是让活动只是收集数据并异步调用适当的方法(使用数据对象)。控制器将知道如何处理数据以上传或保存在数据库中。

将这些方法放在 Application 的扩展中会是一个坏主意吗?

有人提到,根据应用程序的大小,这是可行的,但可能会有更好的解决方案。

4

1 回答 1

1

根据您项目的规模,这将是一个合适的想法。但是,在选择您实际实施的方法之前,您应该了解其他一些方法:

  • 将 aContentProvider用于您的数据,AccountAuthenticator然后使用SyncAdapter. 优点是良好的抽象、独立于活动和许多内置功能(例如:Android 执行您的代码而不会影响电池寿命)。然而,首先实现所有的东西是相当多的工作。如果您不想使用ContentProvider,同样的技术也适用于存根实现,同样适用于AccountAuthenticator.
  • 使用Service, 可能IntentService, 来满足您的上传需求。优点是 Service 有一个独立的生命周期,因此与您的 Activity 没有直接关系;如果服务已被系统杀死,则可以重新启动它。比仅仅使用一些静态方法还有更多的工作。
  • 在您提议时使用静态方法(在您的情况下是 Application 对象;不是完全静态的,但可比较)。很容易实现,如果在多个活动中有类似的任务,这可能是最好的方法;您AsyncTask的 s可以将他们的结果直接发送到启动它的活动。但是不适合长时间运行的任务。
  • 在活动中实施;如果代码只使用一次;仅出于完整性列出,不适用于您的情况。基本上与使用静态方法相同。

这些是突然出现在我脑海中的那些,可能还有其他一些。随意添加/建议附加的。

于 2013-08-07T00:47:20.330 回答