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中传递数据,类似于<NSCoping>
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
Android的activity会随时因为什么原因被Android OS destroy,所以保存data和state非常重要,可以从onCreate中restored这些数据和状态。bundled data,savedInstanceState Intents。
旋转的时候,lifecycle会completely resets。
Fragment Lifecycle
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*