这些Android疑惑,你是否也遇到过?

这是社区第255期技术门诊时一些午饭的提问,以及朱老师耐心的解答。特整理在一起,供大家学习,参考,希望大家能从别人的问题及老师的解答中解决掉自己心中类似的困惑(原专题地址:http://doctor.51cto.com/develop-269-3.html)。(红色字体为解答部分。)
一: 
个人如何从事Android开发。在GoogleMarket关闭对中国程序员的上传权限后,中国的个人Android开发人员将何去何从?
其实GoogleMarket是刚开始谷歌为推广Android而采取的一种激励措施,具体关闭原因我们只能是猜测。但是无论关闭还是以后重开,毕竟Android的发展前景喜人。我们的国内团队总不能盯着GoogleMarket这一小小的市场来寻求盈利吧。现在的人才市场对Android人才的需求量巨大,无论是个人团队和公司团队,不愁有好的方向。
二、
先来顶一个。想问老师一个关于个人android发展的困惑。
我是去年开始4月份学的java,之后十月份开始学了android,做了7个多学的开发,也就是做过两三个商业项目,然后现在在一个公司做android自动化测试。以后也想着继续做开发,只是现在在android学习上迷茫了起来,不知道该怎么学下去,简单的应用能做一点,牵涉到底层就不会了。我不是软件专业的学生,数据结构这类的都没学过,只能说现在只会一点java和android。想深入发展就不知道该怎么进行下去。也想学习一点数据结构,编程思想,或者android底层的东西,但是不知道该怎么学习,该看些什么书?怎样学习效率才高一点。。。。。这个问题,我也咨询过其他的老师,只是感觉还是很困惑,想听听您的指点。

我感觉你的学习速度还是太快,有点拔苗助长的感觉。学编程应该先打好基础,然后多实践,再在项目开发实践中不断的积累经验。Java便是一门浩瀚的编程语言,从桌面到Web,再到移动开发,每一个方面都需要你用数年才能完全掌握。
看来你将来向android应用开发方面发展,所以在此建议你先打好Java语言的基础,语法等知识一定要深入掌握。然后才可以学习Java数据结构和算法的问题,只有经过上述过程之后,你以后的android学习之路就会十分轻松。
android只是比Java多了模拟器和几个控件而已,而这些控件的功能都是通过调用底层接口实现的。了解底层知识确实可以体会android的奥秘,但是这一切是建立在具备Lnux、C、C++知识的基础之上的。如果你只想向android应用发展,建议只看一些底层中的常见接口知识,其余的深入知识可以忽略。
三、
想关注下Android的前景如何?谢谢!

Android是目前市场占有率最高的智能手机操作系统,因为他的操作系统是开源的,所以深受厂商用户和程序员的喜爱。既然这么受欢迎,所以发展前景也及其乐观,不但在智能手机和平板电脑中得到了应用,并且相关的智能电视产品也讲马上问世。至于未来,谁说Android就不能成为PC机的主流系统之一呢?

四、
   经过三星苹果大战,三星败了,势必造成整个安卓厂商的动摇,一个系统没有硬件的支持,也就很难维持他的生存,所以,这次动荡也势必造成安卓一定的结构,那么,在未来的世界了安卓会不会像塞班那样推出?
   其实我们大可不必担心Android的市场前景,这一点以Google今天的地位便可证明一切。长久以来,Google一直是以软件起家,如果现在硬要开发完全自己的硬件产品和自己的Android系统相配合,就注定只能做苹果的追赶者,超越更是遥遥无期。所以可以大胆的判定,在未来一段时间内,Google依旧会走重点发展软件之路,将主要精力用在Android的系统升级之上,硬件产品例如摩托罗拉等只是辅助工作,并且现在的摩托罗拉还不如收购前精彩。

现在的Android已经形成了固定的占有率,相信在未来一段时间内,也会保持这个占有率。相信下一步Google的工作重心将是系统用优化和UI架构,以极力提高用户体验为首要目标。

至于塞班系统,并不是系统不够好,而是诺基亚忽视了对他的升级。没有考虑到社会发展的更高级需求,诺基亚当时是站在金字塔的顶端不求上进。可以说是诺基亚毁了塞班,对塞班没有“呵护备至”的升级。现在的Android的情况和塞班不一样,现在Google对Android的升级很频繁,一年一大变,一年n小变。所以大家无需担心Android的前景问题。
五、
    目前Android的盈利模式在哪里?如何做好应用软件——既不是流氓软件,又可以较好盈利的模式存在么?有没有具体的事例?
   关于Android盈利模式的问题,我已经在上一个提问中进行回答,你可以看一下。我本人认为,流氓软件可能是最初的一种无奈之举,是急功近利的体现。要想做好、做大甚至是做强,一定要原理“流氓”二字。虽然说当前的软件产业竞争激烈,但是毕竟Android在国内仅仅算是刚刚起步。对于技术已经上手的朋友们来说,抢占市场制高点是比较重要的,机会也比较多。相信你能够在我上个问题提到的4种模式中会选到一种适合自己的。
六、
目前Android的盈利模式在哪里?
   其实Android经过最近几年的发展,不难发现它的盈利模式。就目前来看,国内的盈利模式主要集中在如下四个方面:
(1)应用收费类
这一类主要体现在日益火爆的手机游戏中,收费模式和PC机版本的网络游戏类似。
(2)电子商务类
和传统的B2C等购物网站类似,方便了消费者的购物。很多电商站点也都纷纷推出了手机版的购物平台,并且取得了不错的效果。但是就目前技术发展来看,商家和银行需要应付移动网络安全性的问题。
(3)软件应用类
即传统的买卖开发的应用软件,当前的主流模式是借助于大型平台进行交易,例如手机助手。单兵作战的能力还不甚理想,除非自己的作品很有特色。
(4)广告类
这一类和传统的PC版站点类似,靠点击广告来赚取广告费。虽然理论上来说,这是比较有前途的。但是同时,这种模式的转化率(从PV转化过来的广告点击)也是比较低的。就目前市场前景来看,移动版的广告不及网页版广告点击率的1/5,在其中还包括很多因为手机屏幕小造成的误点。这一类盈利模式要求自己的忠实用户比较多,比较具有代表性的是几个大型门户网站,例如网易、搜狐、优酷等。
七、
  专家您好,我是一名大学生。目前我想做android手机的桌面搜索引擎,但是不知道怎么下手,我有基础的android基础,请问我还需要补充什么知识?有什么书籍可以推荐的么?我要怎么入手去做呢?好迷茫啊
   你好,桌面引擎的需要的知识点比较多,除了常见的I/O和SQLite外,还需要掌握在Java和底层之间的串联知识,例如JNI和应用程序接口,并且为了提高搜索效率,需要用C语言编写引擎核心。但是对于只有android基础的你来说,有难度。
所以在此建议你先借助于第三方开源软件来实现,例如Lucene。
如果想独立开发,则需要加强Java语言的学习,例如I/O、JNI,还要掌握C语言和android的底层知识,相关底层知识,可以借鉴电子社刚出版的《Android底层开发技术实战详解:内核、移植和驱动
》一书。按照先Java后底层的顺序,相信你会成功的。
八、
   我们单位有在与某公司合作,开发在安卓移动平台上的一个订货系统,在系统开发前期的需求提供上我曾提过一个问题,如何确保所编写程序的数据应用安全,因为我们的客户需要用用户名和密码登陆系统,但是用户名密码的数据在登陆系统的时候是明文的,我们要求开发公司增加类似MD5之类的简单加密方法,他们都说在安卓平台很难实现,现在导致我们系统的用户名和密码在数据库里面全部是明文的。我想问问就是安卓平台开发个软件做数据加密的功能真的很麻烦么?那现在安卓移动平台有那么多程序,难道都是明文传输的?还有现在安卓平台也好OS平台也好,反正移动平台的业务越来越广了,在确保数据应用安全这一块有什么好办法么?
   不用明文传输,具体加密技术其实有多种方案,其中最简单是从Java的网络协议入手。在Java中传输网络数据时是可以加密的,所以同理在android中也可以使用。另外,加密算法有多种,在移动设备中建议使用倒序编码、键盘编码、反字母表编码、摩尔编码等。MD5加密算法也很容易实现,最科学的做法建议使用数据存储方式,例如将加密数据保存在SQLite中。
九、
   还有个个人的问题,可以不回答。我使用是魅族MX,他的flyme系统也是安卓4.0的,但是用该手机浏览器登录一些flash网站时无法输入用户名和密码之类的(不是用客户端登陆,是网页登陆)听人说是安卓和flash不兼容,不知道是不是这回事。
   是的,可能性非常大,以后Falsh在智能手机系统中的不兼容性将继续存在,未来的方向是HTML
5。
十、
    老师您好,我想咨询个问题,为什么同样一款应用或软件,在ios系统的设备上对硬件要求比android要来的低,很多性能比itouch要高的手机运行同类软件会卡,是否android系统下开发的软件对资源的消耗相对比较高。
    原因有很多,其中最主要的是目前ios的优化工作做得比android好,毕竟android系统要供多家、水平层次不齐的硬件使用,而ios系统是专为苹果自己服务的。
十一、
     老师您好!我是一名大学生,目前是学习计算机网络技术的专业,我在学C++的课程。对于安卓系统手机应用上的程序那块我不是很明白。也没有这种实际的平台来操作。感觉学习的专业知识根本没用在实际生活中去。好想去学习,请问你们这边有没提供给一个学习平台?
      你好,你毕竟是在校学生,接触编程的时间有限。其实对于C++来说,这是一门高深的开发技术,只要精通了C++,其他诸如Java和C#便小巫见大巫,会发现有很多类似的地方。这样在以后学习Java或C#时,会有事半功倍的效果。建议你现在还是从基础做起,学好C和C++。至于Android,等学好C和C++再做决定。
十二、
    老师您好!我是从java新入门了解android的。android内部类和java的内部类是不是有很大区别?我写了一个工具类用java的main方法调用没问题,在安卓中调用就提示找不到内部类了。内部类是在工具类中,工具类实例化内部类的时候抛出异常
     你好,大多数Java内部类可以在Android中直接使用,但是需要注意一个前提,一定要创建Android
SDK环境,并且最好用Eclipse工具创建Android工程。当你掌握了Java的基本知识后,即使发现有的有差别,但是当你用Eclipse调试的时候,也可以根据错误提示修改过来。
十三、
Android的前景如何,未来的ios,wp8,android
竞争这么激烈,andorid的优势又在哪里,求解?
    i从目前情况发展来看,ios和android各具优势,而wp8不足以对两者构成威胁。跟ios、wp8相比,android最大的优势是开源。开源意味着免费,所以吸引了众多手机厂商的青睐。一时之间,无论巨头级的三星,还是国内的山寨厂商,共同推出了数目巨大的产品,这样android就无可争议的获取了占有量的优势。谷歌当前的目的很明确,先拉住用户,占据数量优势,然后想法留住他们。
但是究竟怎么样留住他们呢?我觉得谷歌应该向ios学习,要努力提高用户的体验!将来的智能手机用户对移动设备的要求会越来越高,不仅仅再是作为一个通话工具来使用。这个时候,用户体验就显得尤为重要,例如反应敏捷、界面美化、强大的娱乐和商务实用性等。在android早先的几个版本中,升级过于频繁,而缺乏真正震撼力的升级,仿佛有仓促之感。随着近2年的发展,谷歌已经越来越重视与细节、优化和用户体验,相信在新的版本中,android会做得更好。
十四、
     老师,你们好,我现在在学Android的开发,你能以你的经验给我提一些建议吗?学习就是看着视频,然后敲代码,您觉得合适吗?期待您的建议。
      其实学习任何开发技术的方法都是类似的,那就是多写代码,多练习。只有从实战练习中才能知道自己的不足,并且每一段代码的调试成功能够带来莫名的信心和成就感。另外,对于Android开发来说,需要比较系统的学习Java、SDK等方面的知识,只有视频是不足的,建议多阅读相关书籍,多去知名的技术论坛逛逛,这样能学到更多有用的知识,祝学习成功!
十五、
     1、我是一个Android的初学者,对于一个系统的底层操作,从底层构造服务到最上层的应用调用实现APP,具体的机制和流程是如何的呢?
2、我想对供应商提供的OS进行服务的裁剪,将会涉及到哪些方面的问题?
    具体机制非常简单,就是一个自上而下“寻根”的过程,或者说是自下而上“分支造叶”的过程。
(1)底层是内核系统,核心是驱动程序。
(2)中间层是接口,提供了开发应用所需要的各个接口。
(3)上层是应用程序框架,这是为应用程序层的开发者提供APIs,例如包括了很多有用的控件。
对供应商提供的OS进行服务的裁剪时,最主要的问题是因为硬件的差异造成的兼容,一个细节差异可能会带来移植的麻烦。另外还需要细心,不要忘记仔细做好“善后”工作。
十六、
    如何用Android系统控制外围设备,不知如何设计?
     无论是那种外部设备,控制原理都是一样的,都是通过驱动程序这个中间媒介实现的。驱动调用底层核心,然后再通过调用接口的方式编写应用程序,即可实现对外围设备的控制。这和PC机控制外围设备的原理也是一样的。有关这方面的具体原理和具体实现实例,建议参考电子工业出版社的《Android底层开发技术实战详解:内核、移植和驱动》一书。
十七、
    我是一名java程序员 目前主要从事web开发看到现在很多公司要求熟悉android优先,所以最近开始看android,但不知道有什么好的方法去学习,不知道老师有什么建议,还有android貌似有几个方向,像我这种应该注重哪个方向的开发
     我不知道你用什么技术进行Web开发,所以不太好决定。Android的范围还算“窄”那么点,主要分为:应用方面、底层驱动和移植方面,其中应用又可以细分为游戏、网络等。底层方面需要C、C++、和Linux方面的知识,而应用方面目前主要用Java。如果你以前从事的是Java
Web开发,则android应用可能会上手较快。
其实Web和android也有交集,为移动设备开发网页是将来的一大热点。所以你可以重点学习android网络方面的知识,只要你精通了在android上开发网页的技术,你肯定会在职场中绽放光芒。有关android网络开发技术,建议参考电子工业出版社的《Android网络开发技术实战详解》一书。
十八、
    手里有一个解析Json的项目(android)需要解析Url的json。我通过创建HttpGet对象,用HttpResponse发送GET请求,可是总不能成功返回,都是抛出异常的。在Java下面用URL来创建HttpURLConnection连接获得数据流存到json文件中确可以,这个怎么解决?
     在这个过程需要  response.getEntity()
EntityUtils进行字符串的处理,用JSON 对象进行数据的封装,否则会发生异常。注意到这点后,整个过程和在Java下的类似,只需四个步骤:
(1)通过httpclient向网络端获取到数据,返回JSON object格式的数据。
(2)通过JSON object的get JSONArray()得到数据。
(3)通过对array的遍历 根据元素名称取出各组相应的数据。
(4)得到数据,并且进行填充。
十九、
     Android项目中添加PhoneGap控件,对系统的消耗大吗?是完全替换了还是套壳封装?
      系统消耗不大,最初的PhoneGap是原生方式体现的,我所试过的是在Android项目中添加的是封装版的。不过建议在项目中不使用PhoneGap,毕竟JavaScript调用的方式的功能有限。
二十、
     专家您好,我正在学Android,想做一个android上的socket多人聊天室,可是socket线程把ui阻塞了,在网上查了一下资料,明白了要用android上的多线程机制,可是不知道用handler、AsyncTask、还是service好?谢谢!
     如果要求不高,从难易程度考虑,建议使用AsyncTask,因为毕竟AsyncTask是一个独立的工具类,它提供了多个有用的方法供我们选择。如果从追求效率和稳定性因素考虑,建议用hanlder+message,这一机制号称是最本质的多线程机制,这样就如果提供了一个专门的处理器一样来处理我们的多任务。
二十一、
      老师您好,我想咨询一下,android经过几年的发展,现在的发展情况跟iphone、wp8相比,是否处于移动开发的前列(市场份额,用户使用普及程度),尤其是与iphone相比。另外,作为个人软件开发爱好者,您认为个人开发者在android移动开发中是否有创业的可能性?难度在哪里?谢谢指点。
       无论是从市场占有量、开发人员入门的门槛还是开发成本,android都是占据了绝对优势。至于你所说的创业问题,我的观点是越早越好。既然你已经想到了创业,我想你应该已经具备了创业所需的软硬件条件。毕竟android是近几年发展起来的新技术,高手不如别的程序员那么多,所以说“创业要趁早”。
但是创业并不是简单的“心血来潮”,当前制约android创业盈利的“点”还不如iphone正规,难以形成一个统一的、标准化的而又信息量巨大的市场。要想发展业务,只能凭借仅有的平台来拓展,或者是“赤裸裸”的个人推广。个人感觉谷歌提供的创业平台不如iphone,例如iTunes这一平台的作用是无法想象的。
二十二、
      两位老师好,我是一名android游戏开发者,现在是做单机游戏的。
正准备步入联网游戏开发,想请问下:联网游戏的人物位置在不用机器里是怎么同步的?我的意思是例如现在有A、B两个android手机同时玩一个联网游戏,A手机的人物位置改变的,用什么方式告诉B手机让B手机的人物也改变位置?谢谢!
       有两种可选方案:
(1)利用socket技术,频繁发送A的坐标信息给B。在具体实现时,可以通过触摸按钮的方式实现,每触摸一次,计算一次位置坐标,然后将坐标发送出去。这种方式是大多数网络游戏中的做法,优点是适用于几乎所有的网络游戏。但是缺点很明显,浪费数据,这一缺点对手机来说非常致命。
(2)利用android的广播机制进行通知。不要将广播想象的太复杂,最简单的是只广播起始位置和结束位置,至于复杂程度可以自行设置。
这两种只是简单的方案,如果要想让游戏更加精密,还需要在构建框架时设置人物的移动速率、移动时间差等,这些都需要和游戏服务器配合实现。
有时间可以参阅电子工业出版社刚出版的《Android游戏开发技术实战详解 》和《Android网络开发技术实战详解》两本书,里面介绍了相关内容。
二十三、
      老师,您好,我现在在做一些android的自动化测试方面的工作。不知道在这方面有什么发展?主要就是用了三个android提供的自动化工具,Robotium,Monkey和MonkeyRunner,平时也就用这几个工具写一些自动化的脚步,感觉用起来比较简单。虽然以后还是想往开发发展,但是现在在做着测试的工作,也希望能把测试做好。不知道在android自动化测试方面怎么学习,该学习点什么(我做了两个多月,平时的任务就是用Robotium和MonkeyRunner写点脚本,感觉没啥进步)?自动化测试的发展前景如何?麻烦老师能给出一些指点。
     其实任何一个工作,只要做好了,前途都是光明的。自动化测试是将来软件行业的一个热点之一,毕竟开发出来这么程序,究竟能不能好的运行,能不能更加具有效率,有时凭我们的目前的经验来说很难判断,特别对于android这门近几年刚发展的技术来说更是如此。android自动化测试工作看似简单,其实做好很难。当前的测试工具也不尽完善,工具能够测出的仅仅是大多数,所以给人造成了“android自动化测试”简单的误区。相信随着谷歌对android的发展,以后会有更多的好的测试工具推出,并且也会诞生一些第三方工具。
既然测试工作的前景光明,所以做好是很重要的。平时可以了解一些内存管理和android虚拟机等方面的知识,相信会对你的工作有锁帮助。如果还是希望挑战android开发工作,现在学习也不晚。并且你具备测试方面的经验,相信你开发出的android程序会更加精彩。
二十四、
     老师,你好!我现在掌握和了解的技术主要是j2ee方向的软件开发,最近了解了一点点安卓app的开发流程,发现有相似也有些不大一样的东西,目前找工作很多都有关于安卓方面的开发的,像我这种情况,找到相关的工作的难度多大?转方向突破点又是哪一块呢?谢谢老师的解答!!!
      只了解安卓开发流程是不够的,虽然安卓应用程序是Java开发的,但是毕竟安卓比Java多了一些控件和接口。因为你已经具备了j2ee开发基础,所以现在学习安卓会事半功倍。很明显,当前能够最快提高你的方向是安卓应用领域。建议你先从SDK、控件、接口入手,多阅读一些安卓的典型实例。相信凭着你的基础,能够很快上手。
二十五、
      老师,请教一个问题,”android网络开发”和“phoneGap+web开发”两者的区别在哪里?两者都可以开发android的web应用程序的话,他们的优势是什么,劣势又是什么?您觉得哪一个技术在将来会更加受欢迎?个人觉得web技术会越来越强大,它可以实现跨平台,通过phonegap+jquery
mobile等也可以实现android桌面游戏的开发,而android无法实现跨平台。希望老师百忙之中能够抽空回答一下。
      PhoneGap:是一款HTML5平台,通过它,开发商可以使用HTML、CSS及JavaScript来开发本地移动应用程序。你说的“phoneGap+web开发”是指利用phoneGap平台开发Web网页。
而“android网络开发”的范围则比较广,包含了和网络有关的各种android应用,除了Web方面外,还包括网络通信、蓝牙、无线开发、流量等。
二十六、
      老师你好,我及周边几个同事都想转入Android的开发,做为初学者我们该从哪里入手,有没有什么比较合适的书籍推荐,另外Android的开展前景如何,如何运作Android的运营模式。如何应对Android版本升级的接口变化。Android、iOS、Windows
Phone这个系统的发展形式作个预测。
      我不清楚你们目前从事什么开发,如果是Java方面,向Android应用领域转行会比较容易。如果有Linux、C等经验,可以考虑向Android移植、底层方面转型。

Android的前景请不要怀疑,优势已经在前面的问题中回答了。在将来的一段时期内,智能手机系统市场还是iOS和Android的天下。Windows Phone还需要继续提高自己的修为,因为微软还没有实现一个比较统一的集发布、开发和测试于一体的平台,所以无论是软件支持,还是开发者支持,近期内难以达到理想的效果。当然只要微软解决了这一问题,凭借其目前在PC机的统治力,后来居上也是有可能的。
近期电子工业出版社刚出版的《Android开发实例大全 》《Android多媒体开发技术实战详解》《 Android网络开发技术实战详解 》《 Android游戏开发技术实战详解》《Android底层开发技术实战详解:内核、移植和驱动 》比较具有代表性,相信你们会从中选出适合自己的书籍。
二十七、
    老师您好,
有机会向您请教真是荣幸,我知道有很多库可以实现即时通信,但是对于原理方面了解不多,也不曾深入了解过,想趁这个机会问一下。两个局域网通过互联网相互通信,靠的是tcp/ip但是,
1、两台终端是怎样通过socket进行绑定的呢?
2、我知道局域网和互联网通信可能用到nat,难道这些协议也是通过nat找端口?是怎么实现的?在有就是服务器在这个时候是起的什么样的作用呢?
3、一台终端能够即时的获得消息,是从另一台终端获得的消息吗?还是通过服务器转发?这台终端是否一直占用着socket一个端口?难道是一直在轮询?
因为对这一块很感兴趣,请不吝赐教
   第一个问题就不回答了,因为十分简单,只是一个使用socket实现连接、交互和关闭这三个阶段的过程。
第二个问题:NAT只是一个中间媒介,起一个翻译的作用,翻译的对象是外部因特网网的地址,因为在使用时已经有了外部地址,所以不需要查找端口操作。如果为了追求系统的可扩展性和稳定性,则需要添加找端口机制,但是此时最好对应添加服务器代理,因为这样做的效率会更高。由此可见,这个时候服务器的作用就是处理翻译寻址工作,做一些存储工作。
第三个问题:当然可以从另一台终端获得的消息,但是这样会占用更多资源,所以最合理做法是服务器转发。在一个端口只能用一种方式,例如只能用轮询。一只占用是不好的做法,现在硬件设备都支持轮询,因为这样会更加节约资源,甚至andorid和ios等移动设备都支持轮询。当然也会有人反驳说:移动设备的资源有限,所以才选择用轮询。如果硬要这么反驳,那么在追求效率和利用率的今天,这些工作就没有意义了!
二十八、
     老师你好,我是一个工作快一年的android开发者.由于我们公司是做自己的产品,项目压力比较小,上班的时候有时候感觉无所事事.所以我想多学一点其他方面的东西.我在网上看到好多android开发者都会同时学习ios开发,请问同时使用两种语言会不会比较麻烦?又或者是向NDK方向发展呢?
     是很麻烦,但是幸运的是objective-c和C语言以及Java有很多相似之处,所以能够提高学习ios的效率。大家都是有经验的程序员了,为了自己的未来,相信多学一门新技术是很值得的。
其实NDK方向的难度和ios可以划等号,既然需要付出的时间和精力差不多,为什么不学习一门新的技术呢?
二十九、
      老师您好!我的导师建议我用android开发一款适合中小学教学的教育游戏软件,作为我的毕业论文,但之前没有接触过android,应该从哪些方面来着手学习呢?谢谢!
     老师的任务是让你开发一个android游戏项目,也就是一个android应用程序。因为你是初学者,所以建议你从基础做起,下面是基本的学习流程:
(1)搭建android开发环境
(2)复习Java语言的语法知识,了解Java游戏的知识
(3)android SDK、控件、接口,着重学习和绘图、图形相关的接口类
对于有Java基础的学习者来说,学习android应用开发十分简单。并且建议准备几本android教科书,例如电子工业出版社的新书《Android游戏开发技术实战详解》正好适合现在的你。
三十、
     我之前主要是做WEB前端开发,对J2EE后端的东西自己也了解和学习过一些。现在在接触android这一块,并且想一直走下去。我目前比较迷茫的要怎么样学才能比较高效的掌握好android并且能够达到找到一份好工作的程度,因为我时间不是很多,年龄也不小了今年29岁。呵呵,有点急功近利的感觉。
目前我的学习路线是通过学习视频来入门,书浏览过但是没有仔细揣摩,因为怕费时间。另外是打算研究SDK的sample代码,最后能够自己写几个项目出来去面试,但是又怕自己代码写的很难看很弱智,所以又想学学开源项目的代码,但是又怕遇到完全不知道人家这样写的意图的时候就不知道怎么办了。
不知道这样是否可行?请指点。谢谢~
      首先要明确一个观点:编程是看得见摸得着的工作,编程也是不能急功近利的职业。相对于其他开发工作来说,android是一门相对比较值得投入的技术。视频学习虽然比较迅速,但是这是对初学者来说的。还是建议你购买几本相关书籍,进行一次系统的学习。这看似比较浪费时间,其实这是一劳永逸的做法。
SDK的sample比较具有代表性,但是也存在一个问题:简单和复杂并存。建议你多参阅市面中android书籍中的实例,一般都讲解的比较细致,有利于你看懂并掌握。例如电子社刚出版的《Android开发实例大全》一书,不但有你目前学习的小型项目,而且也有大型的项目,这些项目对你的学习很有好处。

时间: 2024-10-02 14:52:34

这些Android疑惑,你是否也遇到过?的相关文章

Android L 值不值得刷?十个问题解疑惑

笔者今天把大家对Android L预览版的问题进行一个汇总,并挑选十个最受用户关注的问题进行一一回答.相信当你看完这十个问题后,Android L预览版到底值不值得刷?你心中一定会有自己的答案. (一)Android L预览版是什么? 在今年6月26日的谷歌在I/O开发者大会上,谷歌正式推出Android L.虽然没有等到Android 5.0的实际,但Android L的出现,也可以说是Android系统自2008年问世以来变化最大的升级.除了新的用户界面.性能升级和跨平台支持,全面的电池寿命

ios-刚毕业关于ABAP、IOS、Android开发的疑惑,该如何选择?

问题描述 刚毕业关于ABAP.IOS.Android开发的疑惑,该如何选择? 说一下现状:本人2014届毕业生,如今工作做ABAP开发已经三个月了. 毕业时因为在学校时做过Android和IOS.硬件方面的东西,觉得与这两者多少还有点缘分,想做移动开发Android或者IOS,当时都没听说过ABAP.当时找工作阴差阳错之间在企业里做ABAP内部顾问,开始慢慢接触了ABAP,实施公司给培训,也听同事说ABAP的好处,于是就开始上心学这东西.现在工作三月有余了,可发现比较难,做很多东西的时候无从下手

Android电视关闭的动画效果

老式电视机关闭的时候画面一闪消失的那个效果:      首先创建一个TVOffAnimation继承于Animation:  import android.graphics.Matrix; import android.view.animation.AccelerateDecelerateInterpolator; import android.view.animation.Animation; import android.view.animation.Transformation; publ

[android] 百度地图开发 (一).申请AK显示地图及解决显示空白网格问题

    最近做android百度地图,但是使用baidumapapi_v2_3_1.jar和libBaiduMapSDK_v2_3_1.so显示百度地图时总是遇到问题--只显示网格而没有显示地图,网络连接和APIKey申请都是正确的,就是不知道为什么不能显示,网上也有很多人遇到这个问题,有的是SDK更新不兼容.而且网上很多百度地图都是使用V2.3.1版本,后来没有办法只有通过baidumapapi_v2_4_1.jar完成显示地图.    其中需要注意的是使用2.3.1时调用manager.in

你知道android里的“点九”吗?

  "点九"是android平台的应用软件开发里的一种特殊的图片形式,文件扩展名为:.9.png 智能手机中有自动横屏的功能,同一幅界面会在随着手机(或平板电脑)中的方向传感器的参数不同而改变显示的方向,在界面改变方向后,界面上的图形会因为长宽的变化而产生拉伸,造成图形的失真变形. 我们都知道android平台有多种不同的分辨率,很多控件的切图文件在被放大拉伸后,边角会模糊失真. OK,在android平台下使用点九PNG技术,可以将图片横向和纵向同时进行拉伸,以实现在多分辨率下的完美

android中子线程更新UI的方式

一.为何写作此文 你是不是经常看到很多书籍中说:不能在子线程中操作ui,不然会报错.你是不是也遇到了如下的疑惑(见下面的代码): (Bundle savedInstanceState) { .onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = (TextView) findViewById(R.id.tv); Thread.currentThread().setName(); LooperThrea

Android GUI系统之SurfaceFlinger(7) 应用程序的典型绘图流程

1.1.1 应用程序的典型绘图流程 我们知道,BufferQueue有最多达32个BufferSlot,这样设计的目的是什么?一个可能的原因就是提高图形渲染速度.因为假如只有两个buffer,可以想象一下,当应用程序这个生产者的产出效率大于消费者的处理速度时,很快它就会dequeue完所有缓冲区而处于等待状态,从而导致不必要的麻烦.当然,实际上32只是最大的容量,具体值是可以设置的,大家可以结合后面的ProjectButter小节来理解一下. 前面小节我们已经学习了BufferQueue的内部原

Android线程操作对象AsyncTask线程机制

 简单的说,一个程序只有一个主线程,可以有多个主线程.在Android世界中也是这样,Android属于单线程模型,耗时操作必须放在非主线程中执行,故而谷歌为了方便我们使用线程,为我们提供一个AsyncTask多线程操作对象.   对于Android使用线程还有一点需要特别注意,哪就是Android不允许在子线程中更新UI,相信很多初学者一定遇到过这个问题,这个怎么解决呢?在Activity中,我们可以通过   new Thread(new Runnable() { @Override publ

Android 5.0动态设计细节

  错过了历数Honeycomb (3.0).Ice Cream Sandwich (4.0) 和 Jelly Bean (4.1 – 4.3)Android成长的尴尬"青春期",我第一次接触到的还是KitKat 4.4.当时感觉整个系统都非常不错,与iOS 7的操作相对比也没有让人觉得特别适应不了.但是,在应用本身或多或少有些问题,让我仍然无法完全割舍Apple的生态系统,投奔安卓. 而本月发布的安卓5.0棒棒糖,可以说是转折点.5.0为安卓带来了很多优异的功能,而且在很多方面超出了