2010-08-07 36 views
6

桌面应用程序开发(例如Java,WPF,Cocoa)中的哪些概念与Android的基本概念(如Activity,ActivityGroup和Intent)最接近? (以及它们之间有什么细微差别?)通过桌面开发视角了解Android概念

回答

9

我不惊讶你问这个问题。 Android编程范例与我亲身经历的任何东西都大不相同,您首先看看API可能有点令人生畏。我从来没有真正开发任何其他移动设备,但我认为Android具有任何现有操作系统的最严格的架构,并且感觉就像许多设计会议的结果。

,我能想到的把我的头顶部一些对比模式:

  • Activity基本上等同于在桌面系统中的窗口,但在许多方面,它也可以等效为一个应用程序作为一个整体。尽管Android应用程序通常由多个Activity组成,但每个活动都有其自己明确定义的生命周期以及用于休眠/恢复自身的方法(例如,onSaveInstanceState()方法)。但是,Activity绝对不等同于一个过程。如果您真的想了解Android流程生命周期的怪癖,请阅读活动javadoc并查看this other SO question
  • ActivityGroup只能用于android.widget.TabHost。你应该把ActivityGroup看作是一个单独的Activity
  • 上面有人说Activity是一个容器,它是,但它没有孩子,也不负责布局或绘图。我会说一个更好的比喻是“Activity:window :: ViewGroup:layout/container”。
  • android.app.Service ==守护
  • 与大多数的UI框架,所有的UI操作发生在一个单独的线程(以下简称“UI线程”),并有实用方法,让你排队的代码一定的块被执行上UI线程异步。这与WPF的DispatcherObject或SWT的Display类似。
  • Android将用户空间与内核空间的思想延伸到文件系统;您不仅可以访问其他应用程序的虚拟内存,而且您的应用程序还具有其他用户或应用程序没有读/写权限的文件系统部分。
  • 如果您确实想要让其他应用访问您的应用的私人数据存储,请使用ContentProvider。 ContentProviders提供基于查询的语法,与您在传统操作系统上可能找到的任何ODBC实现类似。
  • 我能想到的Intents最接近的类比是AppleScript。就像OS X应用程序将某些方法暴露给脚本引擎一样,Android应用程序也可以处理“intents”,这是一种高级别的IPC。这里的主要区别在于Apple脚本应用程序通过“脚本字典”公开其脚本元素,而很难找出Android应用程序可以处理什么意图,除非您可以查看该应用程序的AndroidManifest.xml

底线: Android是真的比什么都重要,我遇到了和,或好或坏很大的不同,会有这个平台,你会继续发现随着时间的推移很多细微差别。您可以做的最好的事情是从头开始阅读开发者指南。我成为一名全职Android开发员已经有7个月的时间了,我仍然每天都在学习新的东西。 :-)

0
  • 事件:现在有两个事件和意图。任何人都可以订阅行为而不是注册。
  • 桌面小窗口一样的Android小工具(有许多限制)

此外,采取任何库(不是用户界面罐),并将其与不同于J2ME最小的变化,这是修剪J2SE工作。 Android的JVM几乎等同于核心Java库。我尝试过Lucene,它在Android上的工作非常少。

0

您无法通过桌面开发了解这是移动设备。

  • 活动=表单/集装箱
  • 的ActivityGroup使用频率较低或完全不
  • 意图是一种API网关的发行软件操作,意图,该系统将进一步处理它(到底它将最终由一个事件代码来处理)

意图与事件的不同之处在于事件落在您的方法上。 Intents首先在SDK中深入,并且在处理(开始,广播和通知)之后,它将作为事件返回,以便您可以采取行动。