前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android开发入门的正确姿势

Android开发入门的正确姿势

作者头像
刘宁
修改2017-07-21 16:23:19
2.3K0
修改2017-07-21 16:23:19
举报
文章被收录于专栏:刘宁的专栏刘宁的专栏

在进行Android开发之前,我们先了解一下Android的生态圈现状。Android系统是开源的,任何手机厂商和开发者都有权限去修改系统源代码,定制专属的系统。

这就产生了一个问题,不同手机厂商之间的ROM可能无法安装在对方厂商的手机上,而每个厂商生产的手机型号又多种多样(硬件配置和屏幕尺寸,而屏幕尺寸又会导致UI的适配性问题),Google将Android权限开放带来的结果就是Android的碎片化问题。先看一下当前Android系统版本的分布情况:

[1493724332563_55_1493724332862.png]
[1493724332563_55_1493724332862.png]

Android 8.0开发者预览版已经发布,在下个月的Google I/O大会上将会正式发布,但Android系统的升级速度与iOS相比实在太慢了,去年发布的7.0至今占有率还不到5%,这主要取决于各个手机厂商对系统的适配升级。

前面提到过手机厂商的手机型号问题,每个厂商的手机型号都会有自己的定位,通过硬件配置和屏幕尺寸来确定每款手机的定位。再看一下屏幕尺寸的分布情况:

[1493724344088_273_1493724344282.png]
[1493724344088_273_1493724344282.png]

对于开发者而言,我们更关注的是屏幕尺寸和系统版本:APP的UI布局需要保证在不同尺寸的屏幕上能够正常显示,不会出现布局错乱的情况;开发过程中需要针对不同系统版本的特性做相应的逻辑适配,比如Android 6.0权限的动态申请等。

用户在使用APP的时候,与用户交互的每一个完整的页面都可以看做是一个场景,而我们的APP也就是由若干个场景组成的。那在Android中,承载这个场景的是什么呢?下面引出Android中的第一个组件:Activity。

Activity可以看作是MVC中的Controller的角色,负责场景UI的加载以及场景的切换。那场景加载的UI从哪里来呢?在开发过程中有两种选择:(1)在代码中去完成UI的布局,目前iOS开发主要就是通过这种方式来布局的;(2)使用xml来完成布局。在Android开发中,更推荐使用第二种方式来完成静态框架的布局,xml布局方式在布局的过程中便可以预览到布局的效果,这种可视化的布局方式也方便来做屏幕的适配。布局的xml文件位于layout目录下,这个目录存放了我们APP中使用的布局文件。通常我们不会针对不同的屏幕做多套布局,而是使用一套布局文件,添加各种约束来适应不同的屏幕。

在APP的某一个场景也就是Activity中,如果希望用户的某些操作能够通知到其它的场景,或者接收系统的一些通知行为,那就需要由广播来实现,这是我们需要介绍的第二个组件——广播。由系统发出的广播,比如收到短信或者电话这类的广播,任何应用都有权限去捕获这类广播,称为系统广播;还有一类广播只针对应用本身发出,用于应用内部传递消息,其它应用没有捕获的权限,这类广播称为本地广播。从安全性角度来说,APP内最好使用本地广播,而且更高效。

如果我们的应用在没有启动的时候也需要接收一些系统事件,比如短信,那我们需要将广播注册成常驻广播,在系统发出相应的广播后,我们注册的BroadcastReceiver会接收到这个广播来进行处理。在收到某些系统广播后,如果我们需要在后台做一些数据上报之类的操作,这些操作不需要用户感知,也不需要UI与用户交互,那我们可以通过Service组件来实现。

Service运行在后台,用户不可见,我们可以将一些耗时的操作放在Service中完成,这里需要注意的是Service是运行在主线程的,如果在Service中需要处理特别耗时的操作,需要开启线程来执行,否则会出现ANR。Activity可以与Service进行关联,即使Activity被销毁后,也可以重新进行关联,获取后台任务的执行状态。

Android中还有一个ContentProvider组件,虽然是四大组件之一,但它的使用频率并没有其它三个那么高。如果你的APP不会提供数据与其它应用交互,并且也不会访问系统的一些数据资源,可能会很少用到这个组件。ContentProvider可以看做是对底层数据的封装,提供了增、删、改、查的操作接口,避免了直接提供数据库权限带来的安全性问题。

一个完整的Android应用会由上述组件中的若干个组成,而组件在使用时必须要先注册,每一个Android应用都由一个AndroidManifest文件,该文件是一个应用的组件注册表,注册了所有在应用中使用到的组件。除了组件之外,应用使用到的权限也必须在该文件中声明。

由于屏幕的尺寸和分辨率比较分散,同一个icon在不同的手机上显示效果也就不同,因此对于图片资源需要针对不同的分辨率做适配。通常设计师只会出一套iOS的资源,包括2x,3x的尺寸,那这些尺寸的资源如何对应到Android上呢?可以直接将2x资源放在xhdpi目录下,3x资源放在xxhdpi目录下,如果对应的目录下没有资源,Android系统会自动根据当前屏幕的分辨率来选择最合适的资源加载,不会出现资源找不到的情况。

简单总结一下:

1、Android应用由四大组件(Activity、Broadcast、Service、ContentProvider)中的若干个组合而成,与用户直接交互的场景由Activity来实现。

2、使用的组件必须在AndroidManifest文件中注册,相应的权限也必须进行声明。

3、布局文件放在layout目录下,布局尽可能的保证控件的约束能够适应不同的屏幕尺寸。

4、资源文件可以复用iOS的资源,2x和3x分别放在xhdpi和xxhdpi目录下。

5、没有了

以上只是简单的介绍了如何从0开始做Android开发时,先有一个整体的了解,并没有涉及到如何去使用这些组件构建Android应用。对于Android开发的初学者,先有一个大概的框架认识,然后再去详细了解每一部分,逐步深入。

参考资料

系统版本的分布和屏幕尺寸的分布由Google提供,会定期做更新,参考链接:https://developer.android.com/about/dashboards/index.html

本文系转载,如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
短信
腾讯云短信(Short Message Service,SMS)可为广大企业级用户提供稳定可靠,安全合规的短信触达服务。用户可快速接入,调用 API / SDK 或者通过控制台即可发送,支持发送验证码、通知类短信和营销短信。国内验证短信秒级触达,99%到达率;国际/港澳台短信覆盖全球200+国家/地区,全球多服务站点,稳定可靠。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档