Android 101 for iOS Developers

https://www.objc.io/issues/11-android/android_101_for_ios_developers/

Android UI

the action bar, the overflow menu, the back button, the share action, and more

语言

Java

  - java有命名空间
  - 变量用m开头,而不是 _
  - JavaDoc
  - Null 检查。oc 可以给null发消息,java不可以
  - 告别properties。如果你需要读取和写入,那么需要写get和set方法。
  - 函数命名风格,动词+名词

工程结构

  -  安卓工程分两部分:
      1. Java source code :activities, fragments, views, adapters, and data (models and managers)
      2. resource:images, XML layout files, and XML value files
      3. AndroidManifest.xml 对应 Project-Info.plist,保存activities信 
     息,app姓名和配置Intents

Activities

Activities是Android app中最小的可视单位。Android OS维护一个activities stack(是否整个app只有一个栈)。若是调起其他app的activities,也会压入栈中。还有一个区别,任意在Manifest文件中合理注册的activity都可以作为app的入口,而iOS是指定一个window作为入口。model对象必须实现 Parcelable接口,才能再activities和fragments中传递数据,类似于


Fragment

Fragment是安卓特有的元素,用来填充activities。存储state information,持有view logic。同一时间,屏幕上会有多个fragment,activity则是fragment 的controller。fragment没有自己的上下文,其与application's state之间的联系重度依赖于activity。


List Views and Adapters

完成一个表格功能, ListViews+ListActivity+ListFragment+Prediction。Adapter充当datasource和delegate的工作。
getView -- 对应 -- cellForRowAtIndexPath
安卓同样会对cell重用。


AsyncTasks

对应GCD


Activity Lifecycle

image.png

Android的activity会随时因为什么原因被Android OS destroy,所以保存data和state非常重要,可以从onCreate中restored这些数据和状态。bundled data,savedInstanceState Intents。
旋转的时候,lifecycle会completely resets。


Fragment Lifecycle

image.png

onAttach 先于onActivityCreated,即activity在fragment创建之后创建。


Layout

ViewGroup* –RelativeLayout, LinearLayout, and *FrameLayout
在onCreateView中,将layouts和fragment、activities关联起来。


Data 数据持久化

  • Shared Preferences* <-> *NSUserDefaults
  • In-memory objects
  • Saving to and fetching from file structure via the internal or external file storage<-> saving to the documents directory
  • SQLite* <-> Core Data*

你可能感兴趣的:(Android 101 for iOS Developers)