Android开发入门的正确姿势,你get到了吗?

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

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

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

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

对于开发者而言,我们更关注的是屏幕尺寸和系统版本: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

原文出自腾讯云技术社区
原文链接https://www.qcloud.com/community/article/935735

时间: 2024-10-25 02:04:22

Android开发入门的正确姿势,你get到了吗?的相关文章

Android开发入门系列

<1>第一章:java简介- 掌握Java语言基础知识- 理解面向对象的编程思想- 运用Java编写简单的程序- 运用JDBC编写数据库访问程序 本章链接:http://pan.baidu.com/s/1i39OUO1 <2>第二章:Java语言基础      - 理解数据类型       - 掌握运算符       - 掌握数组       - 运用控制流语句 本章链接:(上)http://pan.baidu.com/s/1o6qHOQu(下)http://pan.baidu.c

Android 开发时如何正确获取使用扩展存储路径

Android 开发时如何正确获取使用扩展存储路径 先介绍一下Android的存储 在 2.x 版本中,Android设备都是单存储,第三方App写文件,必须申请 WRITE_EXTERNAL_STORAGE 权限: 在4.0之后,Android设备开始有了内置闪存,即 primary storage,并且可以外置SD卡,即 secondary external storage device: WRITE_EXTERNAL_STORAGE 权限变成了仅仅控制 primary storage,同时

学习Android开发入门

学习Android开发入门第四章:类与对象(上)-掌握成员变量和局部变量的使用-掌握方法重载和重写-掌握构造方法的执行过程-掌握static关键字的使用-掌握多态 本章 链接:1)http://pan.baidu.com/s/1gdmm3Nt2)http://pan.baidu.com/s/1kTn0sCZ<5>第五章:类与对象(下)- 掌握包的概念及包语句- 掌握掌握各种访问权限- 掌握final和abstract关键字- 掌握接口的定义及使用- 使用Eclispe创建jar包 本章 链接:

android开发入门详细教程

随着移动端开发的火热,越来越多的IT程序员转做移动开发,做J2EE的转做Android开发,现在让麦子学院android开发老师给大家讲讲一些入门经验,希望能给你带来帮助. 工具/原料 .        JDK,ADT,JAVA 方法/步骤 1.   开发工具的准备: 第一个工具:JDK1.7, 第二个工具:Android Developer Tools简称ADT. JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK)  只需以上两个工具就可以进行开发

Android开发入门日记

2014.9.3 搭建开发环境: Windows 7/8 JDK ADT-Bundle Android SDK Manager --> Intel Atom x86 System Image --> AVD 2014.9.4 发现了 http://www.androiddevtools.cn ,提供墙内ADT下载. 2014.9.5 发现了很棒的学习网站 http://www.marschen.com ,用这个网站的视频开始学习. 2014.9.9 各种方法仍然无法让SDK Manager正常

教我徒弟Android开发入门(二)

前言: 上一期实现了简单的QQ登录效果,这一期继续对上一期进行扩展 本期的知识点: Toast弹窗,三种方法实现按钮的点击事件监听 正文:   Toast弹窗其实很简单,在Android Studio中打上toast,之后按下tab键就能快捷生成一个Toast Toast.makeText(CurrentActivity.this, "内容", Toast.LENGTH_SHORT).show();括号中的三个参数,第一个是context(上下文,在哪里显示Toast),第二个是一个S

android开发入门:android使用全局变量

android使用全局变量的方法有很多,但是简单好用的方法却很少,前段时间在麦子学院android开发视频教程上面发现一个很好的方法:  public class MyApp extends Application {  private Integer[] state;  public Integer[] getState() {  return state;  }  public void setState(Integer[] state) {  this.state = state;  } 

android开发入门之单选框的基本应用

随着android手机越来越火,android操作系统也深受开发者的喜爱,很多程序员慢慢转行做android开发.今天麦子学院的android开发老师给大家讲讲android单选框基本应用,今天我们跟着麦子学院android老师学习Android单选框的实现方式. ●使用Android单选框的时候,要用RadioGroup来分组 ●选择RadioGroup里的单选框的时候,将调用RadioGroup的Check·()方法 ●追加单选框被选择时处理的时候, 1.调用setOnCheckedChan

Android开发入门

Getting Started Welcome to Training for Android developers. Here you'll find sets of lessons within classes that describe how to accomplish a specific task with code samples you can re-use in your app. Classes are organized into several groups you ca