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

6 android

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

Nei*_*aft 9

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

一些类似的模式,我可以想到我的头脑:

  • An Activity本质上等同于桌面系统中的窗口,但在许多方面它也可以等同于整个应用程序.虽然Android应用程序通常由多个应用程序组成Activity,但每个活动都有自己明确定义的生命周期和休眠/恢复自身的onSaveInstanceState()方法(例如方法).一个Activity是绝对不等同于一个过程,但是.如果您真的想了解Android进程生命周期的怪癖,请阅读Activity javadoc并查看其他SO问题.
  • 一个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应用程序可以处理"意图",这是一种高级别的IPC.这里的主要区别是Apple脚本化应用程序通过"脚本字典"公开其脚本元素,而很难找出Android应用程序可以处理的内容,除非您可以查看AndroidManifest.xml该应用程序的内容.

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