Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android将应用程序类用作控制器,好吗?_Android_Oop_Architecture - Fatal编程技术网

Android将应用程序类用作控制器,好吗?

Android将应用程序类用作控制器,好吗?,android,oop,architecture,Android,Oop,Architecture,我想让我所有的活动(7到10个不同的屏幕)向一个“控制器”提交数据(如果我没有使用这个术语,很抱歉) 在内部,当没有互联网时,控制器数据将被上传或保存到数据中以供上传。 控制器将进行检查和处理,例如: 正在检查有效会话 请在提交之前附上其他所需的凭据 上传等。 会话/用户数据将存储在控制器引用的共享首选项文件中 我的目标是让活动只收集数据并异步调用适当的方法(使用数据对象)。控制器将知道如何处理上传或保存在数据库中的数据 将这些方法放在应用程序的扩展中会是一个坏主意吗 有人提到,根据应用程序

我想让我所有的活动(7到10个不同的屏幕)向一个“控制器”提交数据(如果我没有使用这个术语,很抱歉)

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

  • 正在检查有效会话
  • 请在提交之前附上其他所需的凭据 上传等。 会话/用户数据将存储在控制器引用的共享首选项文件中
我的目标是让活动只收集数据并异步调用适当的方法(使用数据对象)。控制器将知道如何处理上传或保存在数据库中的数据

将这些方法放在应用程序的扩展中会是一个坏主意吗

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


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

  • 对数据使用,然后使用同步到服务器。优点是良好的抽象性、独立于活动和许多内置功能(例如:Android执行代码时不会对电池寿命造成太大影响)。然而,实现所有这些东西一开始需要做很多工作。如果您不想使用
    ContentProvider
    ,同样的技术也适用于,
    AccountAuthenticator
  • 可能是为了满足您的上传需求而使用。优点是该服务具有独立的生命周期,因此与您的活动没有直接关系;如果服务已被系统终止,则可以重新启动该服务。还有更多的工作要做,而不仅仅是使用一些静态方法
  • 在建议时使用静态方法(在您的例子中,是应用程序对象;不是完全静态的,而是可比较的)。很容易实现,如果在多个活动中有相似的任务,可能是最好的方法;您可以将结果直接发送给启动它的活动。但不适用于长时间运行的任务
  • 在活动内实施;如果代码只使用一次;仅为完整性而列出,不适用于您的案例。基本上与使用静态方法相同

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

我建议使用
IntentService
执行上传,并使用
BroadcastReceiver
来“监听”网络更改。如何以及在何处存储挂起的上载将取决于要上载的数据的类型和数量。我将此标记为答案,因为它解决了我的主要问题。“这是个坏主意吗?”然而,你确实提出了一些很好的解决方案。我想知道我是否可以问几个后续问题。我将把它们添加到我的原始帖子中。@user2484014在这里发表评论,或者@-一旦你的问题被提上,请提及我。我的举止如何?。。。非常感谢您的详细回复。我想我想使用IntentService,因为它能很好地满足最终目标。我想我只是挂断了,因为我们的web服务有点古怪。我不仅仅发送命令和数据对象。我传递的一些数据是命令的一部分/唉。网友(只是开玩笑)。不管怎么说,我只是过分担心2-3个电话的评分不同于5-6个电话的评分相同。无论如何,现在是我读书的时候了。再次感谢您抽出时间。