iOS与Android的对比

Android与iOS同属移动系统,两者在sdk层面,以及开发理念上都有所异同。

本文章主要是记录两者在开发中对同一个需求的各自实现方法。

1.Activity与UIViewController

  这两个东西比较类似,

  • Activity可以通过xml描述文件创建
  • UIViewController可以通过StoryBoard(其实也是xml)创建

2.界面的切换

  • iOS里,可以从一个viewcontroller里弹出一个模式界面,也可以在navigationviewcontroller里以压栈的形式跳转一个窗口。不管是哪一种,前一个页面都不会释放掉,都可以返回回来。
  • android里,有两种跳转方式,startActivity和startActivityForResult,startActivityForResult有点儿类似于iOS里的navigationviewcontroller方式,而startActivity的话,是条单行道,只能前进不能后退。
  • 其实这也从一方面证明了两种开发的概念不同,iOS着重于MVC,而android着重于状态。
  • Android里用intent实现界面跳转,ios里使用segue。
  • 对于界面间传值,前跳时,android使用intent传简单值,或者用一个Bundle类来传一些复杂的值。而ios的做法比较简单暴力,就是直接给对象viewcontroller的属性设值。
  • 返回时,Android使用在前一个页面实现一个onActivityResult监听方法来捕获返回的值,读取方法和前跳时没区别。而ios同样还是用比较粗暴的形式,在unwind的delegate方法里直接读取对象viewcontroller的属性值。

3.关于webview

  • ios和android都实现了内嵌web页的控件,都叫webview,使用方法也差不多。不过在捕捉webview事件时有所不同
  • ios是直接实现的uiwebview的delegate方法处理各个事件。
  • android是通过设定给webview一个WebViewClient监听类,通过这个类里的方法来处理各个事件。
  • 比如uiwebview里的shouldstartloadwithrequest 有点类似于WebViewClient的shouldOverrideUrlLoading方法

4.关于二维码读取

  • ios是自带sdk的,比较赞。在AVCaptureSession里设值输出为AVCaptureMetadataOutput,并设其metadataObjectTypes属性为[AVMetadataObjectTypeQRCode]即可,非常简单。
  • android没有自带这个sdk,但是有一个开源的sdk非常有名,zxing

相关推荐