李刚的疯狂android讲义,通读《疯狂Android讲义》笔记 01 ___Android基础篇

文 | 莫若吻

注:

1.本文内容参考 李刚的《疯狂Android讲义》一书。

2.此书适合有一定Java基础、初学Android的同学阅读与学习。我最近想巩固下Android基础知识就来拜读一下此书。

3.本文笔记侧重于知识梳理,不侧重于讲解,如果有同学遇到不懂的知识点可以给我留言或者买书自行学习。

4.如果你最近想参加面试,可以参考此文复习哦!

62be214734d7

安卓图标.png

一.第一章 Android应用

1.Android平台架构及特性

Android系统的底层建立在Linux系统之上,Android平台由操作系统、中间件、用户界面和应用软件四层组成,采用一种被称为软件叠层(Software Stack)的方式进行构建。

这种软件叠层结构使层与层之间相互分离,明确各层的分工。这种分工保证了层与层之间的低耦合。当下层的层内或层下发生改变时,上层应用程序无须任何改变。

2.Android系统组成

Android系统主要由应用程序层、应用程序框架、函数库、Android运行时及Linux内核等5部分组成。

1)开发Android应用程序(即Android APP)是面向底层的应用程序框架进行的。

2)Android运行时由Android核心库集和Dalvik虚拟机2部分组成。每一个Android应用程序都运行在一个单独的Dalvik虚拟机内。

3)Dalvik虚拟机依赖于Linux内核提供的核心功能。

4)Linux内核提供了安全性、内存管理、进程管理、网路协议栈和驱动模型等核心系统服务。

3.Dalvik虚拟机与JVM的区别

Dalvik虚拟机并不遵守JVM(Java Virtual Machine)的规范,两者并不兼容。

JVM运行的是Java字节码(一般是.class文件);

Dalvik运行的是专有的dex文件(Dalvik Executable)。

JVM直接从.class文件或JAR包中加载字节码后运行;

Dalvik则需要通过DX工具将应用程序的所有. class文件译成.dex文件,Dalvik则运行.dex文件。

Dalvik虚拟机非常适合在移动端上使用;相对于PC或服务器上运行的虚拟机,Dalvik不需要很快的CPU计算速度和大量的内存空间。

JVM都是基于栈的,而Dalvik则是基于寄存器的。

4.Dalvik虚拟机的特点

运行专有的.dex文件。

专有的.dex文件减少了.class文件中的冗余信息,而且会将所有的.class文件整合到一个文件中,从而提高运行性能,而且DX工具还会对.dex文件进行一些性能优化。

基于寄存器实现。

大部分虚拟机包括JVM都是基于栈的,而Dalvik则是基于寄存器的。一般基于寄存器的虚拟机具有更好的表现,但在硬件通用性上略差。

5.AndroidManifest.xml清单文件

包括信息:

应用程序的包名,该包名将作为应用的唯一标识。

应用程序所包含的组件,eg:Activity、Service、BroadcastReceiver、ContentProvider等。

应用程序兼容的最低版本。

应用程序使用系统所需的权限声明。

其他程序访问该程序所需的权限声明。

eg:

xmlns:tools="http://schemas.android.com/tools"

package="com.promise.sun">

android:name=".SunApplication"

android:allowBackup="false"

android:hardwareAccelerated="true"

android:icon="@drawable/ic_launcher"

android:label="${APP_NAME}"

android:theme="@style/AppTheme"

android:largeHeap="true"

tools:replace="android:allowBackup,android:label,android:theme">

android:name=".app.activity.WelcomeActivity"

android:screenOrientation="portrait"

android:theme="@style/StartAppTheme">

6.Android组件简介

1)Activity和View

Activity是Android的四大组件之一。

Activity是Android中负责与用户交互的组件,只能通过setContentView(view);来显示指定组件。

View组件是所有UI控件、容器控件的基类,但view组件需要放到容器组件中或者使用Activity将其显示出来。

Note:ViewGroup是View的子类。

2)Service

Service是Android的四大组件之一。拥有独立的生命周期。

Service作用:一般用于为其他组件提供后台服务和监控其他组件的运行状态。

Service与Avtivity的区别在于:Service通常位于后台运行,一般不需与用户交互,因此Service没有图形用户界面。

3)BroadcastReceiver

BroadcastReceiver是Android的四大组件之一。广播消息接收器,对Android应用中其他组件进行监听。

注册系统级的监听事件有两种方式:

在Java 代码中通过Context.registReceiver();完成注册广播。

在清单文件中使用完成注册。

4)ContentProvider

ContentProvider是Android的四大组件之一。

ContentProvider为Android应用之间实现实时数据交换。

Note:一般与ContentProvider结合使用的是ContentResolver,一个应用程序使用ContentProvider暴露自己的数据,而另一个应用程序则通过ContentResolver来访问数据。

5)Intent和IntentFilter

严格讲 Intent并不是Android应用组件。它是Android应用内不同组件之间通信的载体。

Note:Activity、Service、BroadcastReceiver三种组件之间的通信都以Intent作为载体,只使用时略有区别。

启动一个Activity,使用Context的startActivity(intent);方法。

启动一个Service,使用 startService(intent); 或者 bindService(intent,serviceConnection,intFlags);方法。

触发一个BroadcastReceiver,使用sendBroadcast(intent); 或者sendStickyBroadcast(intent) 或者;sendOrderedBroadcast(intent,receiverPermission);方法发送广播。

显示Intent和隐式Intent:

显示Intent:明确指定需要启动或者触发的组件的类名。

隐式Intent:只是指定需要启动或者触发的组件应该满足的条件。

Note:隐式Intent需要通过IntentFilter实现,被调用组件使用IntentFilter来声明自身所满足的条件。

版权声明:本文为博主原创文章,转载请必须注明出处并私信告知与我,谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值