安卓基础相关

(1)   为什么Android系统要比ios卡。

众所周知,安卓手机一直都以“真后台”机制著称,“真后台”就是当你打开一个APP后,它会一直在后台运行,除非你主动去关闭或者内存不够用了。而且任何应用都可以同时进行,它们可以同时连接网络,GPS定位,推送消息等等,这样的后台机制便是”真后台“。

既然有“真后台”那必然也会有“伪后台”,苹果手机的iOS系统就是“伪后台”,当你按下Home键回到桌面的时候,你之前运行的程序大多数都会冻结,你可以理解为从内存中写入到ROM中。等到你再打开这个APP,由于iOS重新加载的过程很快,你几乎察觉不到异常。

当你在使用iPhone手机时,除了正在使用或个别特殊APP是真正运行的,大部分APP都被冻结了(也叫墓碑机制)。要想证明这一点很简单,比如你用iPhone看视频或者玩游戏,当你切出去的时候它们会自动暂停在那里,视频也不会再继续缓冲,因为这个APP被冻结了。

当你的手机返回桌面之后,iOS系统会分析判断这些后台程序,你经常使用且有用的就保留,哪些是没用就进行冻结,以保证内存最大功效的利用,继而带来系统的流畅感。这也就是为什么iPhone虽然只有1GB内存,但却足够使用的原因。

不过最近随着安卓8.0的更新,Google开始回收权限,规范安卓软件环境,并且有很多安卓软件控制后台,比如“黑域”、“绿色守护”、“冰箱”之类的软件,现在的安卓已经拥有了几乎不输ios的操作体验了

(2)Android SDK由几层基础架构所组成?各层的功能、组成各是什么?

Android SDK由四层架构所组成,

1、安卓的最底层是基于Linux内核实现的,它是用来调用核心系统服务,例如:安全、内存管理、进程管理、网络堆栈、驱动模型。Linux Kernel也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务。

2、

Android包含一个C/C++库的集合,供Android系统的各个组件使用。这些功能通过Android的应用程序框架(application framework)暴露给开发者。下面列出一些核心库:

系统C库——标准C系统库(libc)的BSD衍生,调整为基于嵌入式Linux设备 
媒体库——基于PacketVideo的OpenCORE。这些库支持播放和录制许多流行的音频和视频格式,以及静态图像文件,包括MPEG4、 H.264、 MP3、 AAC、 AMR、JPG、 PNG 
界面管理——管理访问显示子系统和无缝组合多个应用程序的二维和三维图形层 
LibWebCore——新式的Web浏览器引擎,驱动Android 浏览器和内嵌的web视图 
SGL——基本的2D图形引擎 
3D库——基于OpenGL ES 1.0 APIs的实现。库使用硬件3D加速或包含高度优化的3D软件光栅 
FreeType ——位图和矢量字体渲染 

SQLite ——所有应用程序都可以使用的强大而轻量级的关系数据库引擎 

3、Application Framework

通过提供开放的开发平台,Android使开发者能够编制极其丰富和新颖的应用程序。开发者可以自由地利用设备硬件优势、访问位置信息、运行后台服务、设置闹钟、向状态栏添加通知等等,很多很多。

开发者可以完全使用核心应用程序所使用的框架APIs。应用程序的体系结构旨在简化组件的重用,任何应用程序都能发布他的功能且任何其他应用程序可以使用这些功能(需要服从框架执行的安全限制)。这一机制允许用户替换组件。

所有的应用程序其实是一组服务和系统,包括:

视图(View)——丰富的、可扩展的视图集合,可用于构建一个应用程序。包括包括列表、网格、文本框、按钮,甚至是内嵌的网页浏览器 
内容提供者(Content Providers)——使应用程序能访问其他应用程序(如通讯录)的数据,或共享自己的数据 
资源管理器(Resource Manager)——提供访问非代码资源,如本地化字符串、图形和布局文件 
通知管理器(Notification Manager)——使所有的应用程序能够在状态栏显示自定义警告 
活动管理器(Activity Manager)——管理应用程序生命周期,提供通用的导航回退功能 

4、Applications

Android装配一个核心应用程序集合,包括电子邮件客户端、SMS程序、日历、地图、浏览器、联系人和其他设置。所有应用程序都是用Java编程语言写的。更加丰富的应用程序有待我们去开发!

(3)

(1)   四大组件(应用程序的组成)是什么,功能分别是?

一般来说Android 程序主要由下列四个部分组成,分别是:活动(Activity) - 用于表现功能服务(Service) - 相当于后台运行的Activity广播接收器(BroadcastReceiver) - 用于接收广播意图(Intent)- 用于连接以上各个组件,并在其间传递消息
  1 Activity 介绍
  Android 中,Activity 是所有程序的根本,所有程序的流程都运行在Activity 之中,Activity可以算是开发者遇到的最频繁,也是Android 当中最基本的模块之一。在Android的程序当中,Activity 一般代表手机屏幕的一屏。如果把手机比作一个浏览器,那么Acitivity就相当于一个网页。在Activity 当中可以添加一些Button、Check box 等控件。可以看到Activity 的概念和网页的概念相当类似。   一般一个Android 应用是由多个Activity 组成的。这多个Activity 之间可以进行相互跳转,例如,按下一个Button 按钮后,可能会跳转到其他的Activity。和网页跳转稍微有些不一样的是,Activity 之间的跳转有可能返回值,例如,从Activity A 跳转到Activity B,那么当Activity B 运行结束的时候,有可能会给Activity A 一个返回值。这样做在很多时候是相当方便的。   当打开一个新的屏幕时,之前一个屏幕会被置为暂停状态,并且压入历史堆栈中。用户可以通过回退操作返回到以前打开过的屏幕。我们可以选择性的移除一些没有必要保留的屏幕,因为Android 会把每个应用的开始到当前的每一个屏幕保存在堆栈中。Activity 是由Android 系统进行维护的,它也有自己的生命周期,即它的一个产生、运行、销毁的一个周期,对于Activity,关键是其生命周期的把握,其次就是状态的保存和恢复(onSaveInstanceState onRestoreInstanceState),以及Activity 之间的跳转和数据传输(intent)。
  2 Service 介绍
  Service 是android 系统中的一种组件,它跟Activity 的级别差不多,但是他不能自己运行,只能后台运行,并且可以和其他组件进行交互。Service 是没有界面的长生命周期的代码。Service 是一种程序,它可以运行很长的时间,但是它却没有用户界面。这么说有点枯燥,我们来看个例子。打开一个音乐播放器的程序,这个时候若想上网了,那么,我们打开Android 的浏览器,这个时候虽然我们已经进入了浏览器这个程序,但是,歌曲的播放并没有停止,而是在后台继续一首接着一首的播放。其实这个播放就是由播放音乐的Service进行控制。当然这个播放音乐的Service也可以停止,例如,当播放列表里边的歌曲都结束,或者用户按下了停止音乐播放的快捷键等。service 可以在和多场合的应用中使用,比如播放多媒体的时候用户启动了其他Activity这个时候程序要在后台继续播放,比如检测SD 卡上文件的变化,再或者在后台记录你地理信息位置的改变等等,总之服务嘛,总是藏在后头的。
  3 BroadcastReceiver 介绍
  在Android 中,Broadcast 是一种广泛运用的在应用程序之间传输信息的机制。而BroadcastReceiver 是对发送出来的Broadcast进行过滤接受并响应的一类组件。可以使用BroadcastReceiver 让应用对一个外部的事件做出响应。这是非常有意思的,例如,当电话呼入这个外部事件到来的时候,可以利用BroadcastReceiver 进行处理。例如,当下载一个程序成功完成的时候,仍然可以利用BroadcastReceiver 进行处理。BroadcastReceiver不能生成UI,也就是说对于用户来说不是透明的,用户是看不到的。BroadcastReceiver通过NotificationManager 来通知用户这些事情发生了。BroadcastReceiver 既可以在AndroidManifest.xml 中注册,也可以在运行时的代码中使用Context.registerReceiver()进行注册。只要是注册了,当事件来临的时候,即使程序没有启动,系统也在需要的时候启动程序。各种应用还可以通过使用Context.sendBroadcast () 将它们自己的intent broadcasts广播给其他应用程序。注册BroadcastReceiver有两种方式:
  4 Intent 介绍
  Intent 是一个将要执行的动作的抽象的描述,一般来说是作为参数来使用,由Intent来协助完成android 各个组件之间的通讯。Intent 负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android 则根据此Intent 的描述,负责找到对应的组件,将Intent 传递给调用的组件,并完成组件的调用。因此,Intent 在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。例如,在一个联系人维护的应用中,当我们在一个联系人列表屏幕(假设对应的Activity 为listActivity)上,点击某个联系人后,希望能够跳出此联系人的详细信息屏幕(假设对应的Activity为detailActivity)。为了实现这个目的,listActivity需要构造一个Intent,这个Intent 用于告诉系统,我们要做"查看"动作,此动作对应的查看对象是"某联系人",然后调用startActivity(Intent intent),将构造的Intent 传入,系统会根据此Intent 中的描述,到ManiFest中找到满足此Intent 要求的Activity,系统会调用找到的Activity,即为detailActivity,最终传入Intent,detailActivity 则会根据此Intent中的描述,执行相应的操作。Intent 主要是用来启动其他的activity 或者service,所以可以将intent 理解成activity 之间的粘合剂。Intent具体有一下3 种形式:   通过startActivity 方法来启动一个新的Activity;   通过broadcast Intent 机制可以将一个Intent 发送给任何对这个Intent 感兴趣的BroadcastReceiver;   通过startService (Intent) 或bindService(Intent,ServiceConnection,int) 来和后台的Service 进行交互。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值