Android编程风格

Android编程风格,android,Android,我最近一直在为我的Android手机编码,我一直在想。。。这个Intent类是否应该概述一种新的编程风格 我一直怀疑API设计不利于MVC:意图是与所有用户相关对象(活动、服务、其他应用程序等)交互的主要方式 我的思路对吗?是否应该坚持用业务逻辑“污染”活动 我一直在阅读android开发者网站,但不鼓励使用特定的编码风格。您的问题并不完全清楚,因为您似乎混淆了编码风格和程序架构 在我看来,Android在编码风格方面没有任何改变。您的Java编码风格仍然可以正常工作,大多数Android应用程

我最近一直在为我的Android手机编码,我一直在想。。。这个Intent类是否应该概述一种新的编程风格

我一直怀疑API设计不利于MVC:意图是与所有用户相关对象(活动、服务、其他应用程序等)交互的主要方式

我的思路对吗?是否应该坚持用业务逻辑“污染”活动


我一直在阅读android开发者网站,但不鼓励使用特定的编码风格。

您的问题并不完全清楚,因为您似乎混淆了编码风格和程序架构

在我看来,Android在编码风格方面没有任何改变。您的Java编码风格仍然可以正常工作,大多数Android应用程序看起来与其他应用程序非常相似。抽象地说,有些事情你可能想在安卓系统中做,但在其他语言中却做得不多,其基本思想是:内存是有限的,如果不需要,就不要使用它


就整个程序架构而言,是的,Android风格高度基于消息传递(通过意图对象)风格。您对活动中GUI事件的反应方式大体上仍然相同:您使用事件处理程序对按钮按下等事件作出反应。。。但该平台主要围绕使用不同组件(活动、服务、广播接收器等)设计应用程序,并打算在它们之间进行通信。虽然意图提供了一种在组件之间交换数据的灵活方式,但你仍然不应该在意图中传递大量数据,相反,你应该将这些内容放在ContentProvider或类似的东西中。

你的问题并不完全清楚,因为您似乎混淆了编码风格和程序架构

在我看来,Android在编码风格方面没有任何改变。您的Java编码风格仍然可以正常工作,大多数Android应用程序看起来与其他应用程序非常相似。抽象地说,有些事情你可能想在安卓系统中做,但在其他语言中却做得不多,其基本思想是:内存是有限的,如果不需要,就不要使用它


就整个程序架构而言,是的,Android风格高度基于消息传递(通过意图对象)风格。您对活动中GUI事件的反应方式大体上仍然相同:您使用事件处理程序对按钮按下等事件作出反应。。。但该平台主要围绕使用不同组件(活动、服务、广播接收器等)设计应用程序,并打算在它们之间进行通信。虽然意图提供了一种在组件之间交换数据的灵活方式,但您仍然不应该在意图中传递大量数据,相反,您应该将这些内容放在ContentProvider或类似的东西中。

发送和接收意图与发送和注册非常相似(类似于发布-订阅通道)用于命令消息(例如,在分布式企业应用程序中,这是关于体系结构而不是样式的)。此模式有助于设计一个松散耦合的交互应用程序系统。

我不记得以前曾见过类似的体系结构用于在一台计算机上交互组件和应用程序,但它有助于使用其他应用程序设计应用程序,从而轻松构建功能/组件的生态系统

发送和接收类似于发送和注册命令消息(类似于发布-订阅通道)(例如,在分布式企业应用程序中,这是关于体系结构而不是样式的)。此模式有助于设计一个松散耦合的交互应用程序系统。

我不记得以前曾见过类似的体系结构用于在一台计算机上交互组件和应用程序,但它有助于使用其他应用程序设计应用程序,从而轻松构建功能/组件的生态系统

我从这本书中汲取了以下许多想法。这正是最适合我的

就架构而言,它帮助我将Android的UI视为一种模式——我发现它实际上类似于.Net Web表单。所以是的,它确实适合MVC(至少是它的页面控制器风格)。活动是您的控制器,您通常将视图存储在XML中,并且您可以随心所欲地构建模型

你可以在安卓系统中看到很多网络创意。意图很像HTTP,或者更一般地说是REST。意图有一个“名词”来表示它们所关心的内容(可以是显式的类声明,即:转到特定的活动,也可以使用意图过滤器更隐式),动作很像HTTP动词(Get、Post等),捆绑包很像查询字符串参数或有效负载的列表……等等

与网页类似,您希望活动能够自行处理。我的意思是,您不想在一个活动和另一个活动之间传递某个大型序列化对象,只需将给定记录的id传递给下一个活动,并让该活动从db(ContentProvider,其他一些持久性源…)获取具有该id的记录,这会更加干净/有弹性/可靠。活动也应该是松散耦合的,并且您应该能够从不同的路径导航到一个,这也使得它们更加可重用。因此,允许活动的调用者简单地提供一个recordId要比期望其使用者提供一个大型序列化对象的活动容易得多

底线——不,您不需要用业务逻辑污染活动,也不需要把这些东西塞进应用层或网关之类的东西。至于持久性,ContentProvider接口设计得非常好——我非常喜欢它。它还延续了安卓RESTful主题,通过URL访问内容