安卓学习笔记(一)

有了一些Java的基础,最近开始学习Android,准备边学习边写一些博客,记录自己的学习过程,也有助于思考。自己平时看书可能不会按顺序看,会大略的看一遍框架,然后对自己感兴趣的部分着重看,搜索,所以写的进度也可能比较乱,水瓶座不爱按套路出牌:)

    Android系统的底层建立在Linux系统之上,该平台由操作系统、中间件、用户界面和应用软件4层组成,它采用一种被称为软件叠层的方式进行构建。这种软件叠层结构使得层与层之间相互分离,分工明确。

    Android系统主要由5部分组成,应用程序层,应用程序框架(提供大量API供开发者使用),函数库(一套被不同组件所使用的C/C++库的集合),Android运行时(Android核心库集和Dalvik虚拟机),Linux内核。

    每个Android应用程序都运行在单独的Dalvik虚拟机内,Dalvik不同于JVM,JVM直接从.class文件或JAR包中加载字节码运行,而Dalvik需要通过DX工具将应用程序的所有.class文件编译成.dex文件,再运行该.dex文件。

    Dalvik虚拟机非常适合在移动终端上使用,不需要很快的CPU计算速度和大量的内存空间,两个特点:运行专有的.dex文件,基于寄存器实现。

    Android应用程序由四个基本组件组成,Activity,Service,BroadcastReceiver,ContentProvider。Activity为Android应用提供可视化的用户界面,同时负责与用户的交互,通过setContentView(View)来显示指定组件。如果一个应用需要多个用户界面,这个应用会包含多个Activity,放在一个Activity栈中,当前活动的Activity位于栈顶。

Service与Activity的地位是并列的,它也代表一个单独的Android组件,常运行于后台,不需要与用户交互,因此没有图形用户界面。Service组件需要继承Service基类,有自己独立的生命周期,通常用于为其他组件提供后台服务或监控其他组件的运行状态。

BroadcastReceiver代表广播接收器,类似于编程中的事件监听器,与事件监听器不同的是,它监听的是Android应用中的其他组件。开发者需要实现自己的BroadcastReceiver子类,并重写onReceive(Context context,Intent intent)方法,当其他组件通过sendBroadcast(),sendStickyBroadcast(),sendOrderedBroadcast()方法发送广播消息时,如果他对这些消息感兴趣(通过IntentFilter配置),他的onReceive(Context context,Intent intent)方法将会被触发。两种方式来注册监听器,在Java代码中用Context.registReceiver()方法来注册,在AndroidManifest.xml中用<receiver/>来注册。

ContentProvider,负责应用程序之间的数据交换,需要实现如下抽象方法,insert(Uri,ContentValues),delete(Uri,ContentValues),update(Uri,ContentValues,String,String[]),query(Uri,String[],String,String[],String),插入,删除,更新,查询数据。与ContentProvider结合使用的是ContentResolver,一个应用程序使用ContentProvider暴露自己的数据,另一个应用程序使用ContextResolver来访问数据。

Intent与IntentFilter。当Android运行时需要连接不同的组件时,通常需要借助Intent来实现,Intent可以启动应用中的另一个Activity,也可以启动一个Service组件,还可以发送一条广播消息来触发系统中的BroadcastReceiver。不同组件使用Intent的机制略有区别。

当需要启动Activity时,可调用Context的startActivity(Intent intent)或startActivityForResult(Intent intent,int requestCode)方法。

当需要启动Service时,可调用Context的startService(Intent intent)方法或bindService(Intent service,ServiceConnection conn,int flags)方法。

当需要触发BroadcastReceiver时,可调用Context的sendBroadcast(Intent intent),sendStickyBroadcast(Intent intent),sendOrderedBroadcast(Intent intent,String receiverPermission)方法来发送广播消息。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值