通过桌面开发视角了解Android概念

时间:2010-08-07 17:23:08

标签: android

桌面应用程序开发中的哪些概念(例如Java,WPF,Cocoa)最接近Android的基本概念,如Activity,ActivityGroup和Intent? (它们有何不同之处有什么细微差别?)

3 个答案:

答案 0 :(得分:9)

你问这个问题我并不感到惊讶。 Android编程范例与我亲身经历的任何内容都有很大的不同,你第一次看API可能有点令人生畏。我从来没有真正开发过任何其他移动设备,但我认为Android拥有任何现有操作系统中最严格的架构,感觉就像是许多设计会议的结果。

我能想到的一些类似的模式:

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

底线: Android与我遇到的其他任何东西都非常不同,无论好坏,平台上会有很多细微差别,你会随着时间的推移继续发现。您可以做的最好的事情是从上到下直接阅读开发人员指南。我有7个月的时间成为一名全职的Android开发人员,而且我每天都在学习新事物。 : - )

答案 1 :(得分:0)

  • 事件:现在有两个,事件和意图。有了意图,任何人都可以订阅行为而不是注册。
  • 桌面小部件与android小部件相同(有很多限制)

此外,采用任何库(不是用户界面jar),它的工作变化很小,不像J2ME修剪J2SE。 Android的JVM几乎等同于核心Java库。我尝试过Lucene,它在Android上的工作非常简单。

答案 2 :(得分:0)

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

  • 活性=窗体/容器
  • ActivityGroup使用频率较低或根本不使用
  • Intents是一种发布软件操作的API网关,系统将进一步处理它的意图(最终它将最终由事件代码处理)

Intent与事件不同,因为事件落在您的方法上。意图首先在SDK中深入,在处理(启动,广播,通知)后,它将作为事件返回,以便您可以对其进行操作。