Android是什么,中的Parcel是什么 软件开发需要学什么 IOS为什么比android....

什么是Android?

  Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。

Android发展概况?

  Android自发布以来就受到了许多大厂的鼎力支持,如摩托罗拉、HTC、三星、LG等手机大厂都纷纷推出了自家旗下的 Android手机。而发展至今,Android共经历了Android 1.1;Android 1.5;Android 1.6;Android 2.0/2.1 ;Android 2.2;Android3.0这几个主要版本。

Android平台手机的优势?

  一、开放性

  在优势方面,Android平台首先就是其开发性,开发的平台允许任何移动终端厂商加入到Android联盟中来。显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。

  开发性对于Android的发展而言,有利于积累人气,这里的人气包括消费者和厂商,而对于消费者来讲,随大的受益正是丰富的软件资源。开放的平台也会带来更大竞争,如此一来,消费者将可以用更低的价位购得心仪的手机。

  二、挣脱运营商的束缚

  在过去很长的一段时间,特别是在欧美地区,手机应用往往受到运营商制约,使用什么功能接入什么网络,几乎都受到运营商的控制。自从iPhone上市, 用户可以更加方便地连接网络,运营商的制约减少。随着EDGE、HSDPA这些2G至3G移动网络的逐步过渡和提升,手机随意接入网络已不是运营商口中的 笑谈,当你可以通过手机IM软件方便地进行即时聊天时,再回想不久前天价的彩信和图铃下载业务,是不是像噩梦一样?

  互联网巨头Google推动的Android终端天生就有网络特色,将让用户离互联网更近。

  三、丰富的硬件选择

  这一点还是与Android平台的开放性相关,由于Android的开放性,众多的厂商会推出千奇百怪,功能特色各具的多种产品。功能上的差异和特 色,却不会影响到数据同步、甚至软件的兼容。好比你从诺基亚Symbian风格手机一下改用苹果iPhone,同时还可将Symbian中优秀的软件带到 iPhone上使用、联系人等资料更是可以方便地转移,是不是非常方便呢?

  四、不受任何限制的开发商

  Android平台提供给第三方开发商一个十分宽泛、自由的环境。因此不会受到各种条条框框的阻扰,可想而知,会有多少新颖别致的软件会诞生。但也有其两面性,血腥、暴力、情色方面的程序和游戏如可控制正是留给Android难题之一。

  五、无缝结合的Google应用

  如今叱诧互联网的Google已经走过10年度历史。从搜索巨人到全面的互联网渗透,Google服务如地图、邮件、搜索等已经成为连接用户和互联网的重要纽带,而Android平台手机将无缝结合这些优秀的Google服务。

Android的开发技术很多,在开始学习的时候不可能一次性全部学会,也没有必要一开始都全部学会,但是有些技术是非常常用的,需要在开始时打好基础,这些技术时:

1、Activity生命周期

虽然Android中有四大组件,但是不可否认Activity是最常用的。所以熟练掌握Android的生命周期是必须的。其实生命周期就是记住 Activity的那些方法在什么时候被系统调用,这样才可以把对应的逻辑代码写到合适的方法内部去。

至于服务和广播组件可以稍微缓一下,到实际使用的时候再学习都可以。

2、界面开发技术 

界面开发是一种基本的技术,几乎所有的程序里面都需要用到。在Android开发中界面开发分为3种:   1)使用xml文件布局 

  使用xml首先对于界面进行布局,然后在Activity里面进行引用是最常见的应用软件开发技术,这种方式使用的最大,需要学习的内容也最多。学习时需要熟悉: 

  a)五种Layout布局 

  深刻理解五种布局组织控件的方式是一个基本的基础,这样你才可以在实际的界面中灵活的使用每种布局结构,构造出需要的界面。 

  b)常用控件 

  控件有很多,至少要知道每种控件是做什么的,至于里面的特定参数和方法可以学要的时候再去查   

c)界面美化 

  系统的控件很多时候无法满足要求,需要通过添加背景更换图片等进行美化,要熟悉每种控件如何去美化。

掌握了上面的内容,通过布局的嵌套就可以制作出各种界面,如果在熟悉include的使用就可以减少xml的重复,方便后期的修改和维护了。


2)使用代码动态创建

有些时候需要动态的创建一些布局和控件,这个就需要使用LayoutInflater去创建一些动态的界面了。

3)自己绘制界面

游戏中常用,继承SurfaceView自己绘制。

3、数据存储技术

Android中的数据存储方式有3种:

1)SharedPrefereneces存储 

  对于简单的数据可以使用该方式存储,以键值对的方式存储一些基本的数据。 

  2)文件存储 

  将数据以文件的形式存储,可以是手机自身的存储也可以是SD卡,文件的数据格式自己定义。   3)SQLite数据库存储 

  使用标准SQL语句进行操作,复杂数据的首选。   4、网络编程 

  现在的Android程序不需要联网的已经不多了。所以网络编程也是必须的,一般的公司都会封装有自己的联网结构,但是基本的联网还是要熟悉。   1)HTTP联网 

  使用Http联网+Json数据格式是现在很多客户端的首选。   2)Socket联网 

  至于蓝牙等连接方式则可以在项目需要的时候学习。 

  对于手机的系统功能,如拨打电话、发送短信、读取系统参数等则可以根据需要在学习,不麻烦的。

其次,手机软件相关 

  Android开发不同于普通的电脑软件开发,需要了解手机的操作习惯,知道手机的屏幕不大、内存有限,电池有限等,在实际开发和设计时尽量考虑。

如果要在进程之间传递一个整数,很简单,直接传就是行了;如果要传一个字符串,就稍微复杂了点:需先分配一块可以容纳字符串的内存,然后将字符串复制到内存中,再传递(新手可能问:为啥不直接把字符串的引用传过去呢?学过C/C++的地球人都知道:进程有自己的内存地址空间,一个进程中的1000地址可能在另一个进程中是100000,java对象的引用跟本上还是内存地址);再如果要传递一个类的实例呢?也是先为类分配内存,然后复制一份再传递可以吗?我认为不可以,我至少可以找到一个理由:类中成员除了属性还有方法,即使属性能完整传过去,但还有方法呢?方法是独立于类对象存在的,所以到另一个进程中再引用同一个方法就要出错了,还是因为独立地址空间的原因。

    Android开发中,很经常在各activity之间传递数据,而跟据Android的设计架构,即使同一个程序中的Activity都不一定运行在同一个进程中,所以处理数据传递时你不能老假设两个activity都运行于同一进程,那么只能按进程间传递数据来处理,使之具有最广泛的适应性。

那么到底如何在进程之间传递类对象呢?简单来说可以这样做:在进程A中把类中的非默认值的属性和类的唯一标志打成包(这就叫序列化),把这个包传递到进程B,进程B接收到包后,跟据类的唯一标志把类创建出来,然后把传来的属性更新到类对象中,这样进程A和进程B中就包含了两个完全一样的类对象。

1、iOS开发比Android开更容易赚钱

1.1 Appstore上的应用和游戏比Android play store质量高

         现在Android Market变更为Android play store,App Store大概已经超过60万应用了,Android play store大约30万,App store的应用和游戏都是通过严格审核的,大多是收费的应用游戏。Android里面的色情、壁纸和铃音等垃圾应用数量也是很庞大,如果去除这些,Android Market的应用数量和质量会更缩水。当然在这么大的数目下,数量已经不是竞争关键,应用质量才是真正的关键。

          Android应用商店鱼目混杂,混战、杂乱、参差不齐,这是对国内安卓第三方应用商店现状的惯用表述语,部分商店根本没有对应用的审核,应用的安全性如何保证?这让消费者如何选择!?

1.2 iOS系统大部分通过收费应用道具赚钱,Android play store的大部分应用通过广告赚钱 。

        很显然,iOS的封闭有助于游戏应用版权的保护,很多做Appstore的游戏的厂商都日进斗金,iOS用户所花的钱远超Android用户,这事其实有很多原因。这样的差距,事实上已经表现在开发者对两家平台的态度上,Google被公认的广告互联网公司,Android系统也是为力助google的广告业务。iOS理所当然的成为了开发者心目当中的首选平台,因为它之上的用户更愿意购买应用。

          在国内,Apple公司开通了人民币支付通道,这使得天朝人民也能够很简单的购买Appstore里的游戏和应用了。这从我身边有Iphone,Ipad的同事朋友都能察觉到,现在他们已经不屑于越狱iOS系统,愿意购买游戏。我的一位收入普通的同事,在买了Iphone之后,两个月内花了400多人民币购买应用和游戏,另外买了Ipad的同事也没有越狱,购买了正版的游戏,是Appstore培养了国人买软件的习惯。开发者更愿意用实力来赢取金钱而不是广告。而Android很多相应的应用,要么免费加广告的形式(比如愤怒的小鸟)

          相对来说,Android容易被盗版,把Android的 apk解压,随便换掉些图片,然后加上广告,这个游戏应用就被盗版了,很多大型游戏厂商,都是担心盗版问题,所以不敢在Android系统上花太多的精力。

2、iOS开发比Android简单便利

有这么一个段子:两个创业团队各拿到了100万投资.甲团队是iOS平台游戏开发.乙团队是Android平台游戏开发.一个月后乙团队宣布解散.众人惊!!问其何故?答曰;我也不知道为什么.就在买第999部Android测试手机的时候.我发现我们没钱了。(虽然比较夸张,但这也体现了开发Android的悲催之处。)

          很多人以为iOS开发比Android难,因为Andriod的应用层是java开发的,应用层开发比较简单。这个观点我不太认可,虽然应用层是java开发的,想要开发一款好的游戏应用,需要了解深层学习的东西太多了,Android上没有现成的好看的UI控件和机制,很多控件和效果都需要自己自定义实现,这就大大加大了开发Android的难度,而IOS上大部分现成的UI控件和机制就能完成一款不错的应用了。更不需要考虑Android上的几百种机型的适配。我是亲身经历,除了要考虑这些机型的适配,还要防住国内运营商对Android手机的各种功能的阉割,比如不能带 google  地图,基站定位等等。不适配这些机型老板又不乐意。

            事实上这个世界上大部分正经游戏都是用C++开发的,而Objective-C与C++天生 一家的特性吸引了太多游戏开发者(你可以直接用C++给iOS开发游戏)

Mac OS上的Xcode集成开发环境更是开发iOS的神器。iOS 5支持storyboard的开发,使得开发iOS系统的界面更容易。

3、iOS开发比Android开发工资更高

  我这里说的是大部分的程序员,当然少数的Android开发人员的工资会比IOS开发的工资高。

造成这样的原因总结有两点:

3.1 iOS开发的人才比较少

    经过2011到现在Android招聘的疯狂,现在Android的程序员渐渐多起来了不再是物以稀为贵了,很多原来Java的程序员很轻松的就转向了Android的开发,使得android人才很快得到满足,但是iOS开发呢? iOS开发成本比较高,首先需要一台Mac电脑,如果需要真机调试,还得买Iphone或者iTouch,还得每年99$的钱给Apple公司。对于一个在校大学生,或者刚毕业参加工作的程序员来说,他们会更倾向与学习Android,因为用来开发的电脑和手机可能都是现成的,不需要增加任何成本。 

就这么一个门槛,就能把很多人拦在了iOS开发的门外了。这样就造成了iOS开发人才物以稀为贵了。

3.2 认为Objective-C开发比较高端

   是的,大部分人都误以为Objective-C开发比java难,真正用到Objective-C熟练之后,你会发现,Objective-C其实不比java难。

如有什么建议和疑问,欢迎留言讨论。

欢迎大家加群技术交流1群:367685933

                                   2群:670120170

猜你喜欢

转载自blog.csdn.net/weixin_42600182/article/details/81302095