Android 程序是利用Java语言来开发的。编译完成的java代码、数据和资源文件是通过一个叫做aapt的工具进行打包,打包之后会生成一个.apk文件。最终用户可以将.apk文件安装在Android手机上; 一般情况下,一个.apk文件就被称为一个应用程序。
编译过程
.java-class==>dx.bat==>classes.dex
classes.dex---------------(经历过程)------------------sms.apk
aapt.exe android应用环境下的打包工具把应用程序素材资源res manifast.xml
每一个Android应用程序都是运行在一个独立环境中的,这体现在很多方面:
默认情况下,每个Android应用程序都是运行在它自己的linux进程中。当应用程序的任何部分代码需要被执行
时,Android会启动这个进程来运行它;当不再需要这个应用(即进程)时,并且其它应用请求系统资源时,Android
就会关闭这个程序。
每个进程都拥有一个独立虚拟机,所以每一个应用程序相对于其它的应用程序是运行在一个孤岛环境中的。
默认情况,每个android应用程序都分配了一个linux用户id,并且进行了相关的权限设置,所以应用程序的文件
只是对本应用程序是可见(当然,也是一些方式来将这些文件导出给其它的应用程序使用)。
多个应用程序是可以分配一个相同的id的,这样话,它们就能访问彼此的文件了。多个拥有相同用户id的应用程序
也可以运行在同一个linux进程中,共同一个虚拟机,可以节约系统资源。
Android四大基本组件介绍与生命周期
Android四大基本组件分别是
1》Activity
2》Service服务
3》Content Provider内容提供者
4》BroadcastReceiver广播接收器
一:了解四大基本组件
Activity :
应用程序中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。
Activity之间通过Intent进行通信。在Intent 的描述结构中,有两个最重要的部分:动作和动作对应的数据。
一个Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务,例如拨号、拍照、发送email、看地图。每一个activity被给予一个窗口,在上面可以绘制用户接口。窗口通常充满屏幕,但也可以小于屏幕而浮于其它窗口之上。
一个应用程序通常由多个activities组成,他们通常是松耦合关系。通常,一个应用程序中的activity被指定为"main"activity,当第一次启动应用程序的时候呈现给用户的那个activity。每一个activity然后可以启动另一个activity为了完成不同的动作。每一次一个activity启动,前一个activity就停止了,但是系统保留activity在一个栈上(“back stack”)。当一个新activity启动,它被推送到栈顶,取得用户焦点。Back Stack符合简单“后进先出”原则,所以,当用户完成当前activity然后点击back按钮,它被弹出栈(并且被摧毁),然后之前的activity恢复。
当一个activity因新的activity启动而停止,它被通知这种状态转变通过activity的生命周期回调函数。有许多回调函数一个activity可能会收到,源于它自己的状态变化-无论系统创建它、停止它、恢复它、摧毁它-并且每个回调提供你完成适合这个状态的指定工作的机会。例如,当停止的时候,你的activity应该释放任何大的对象,例如网络数据库连接。当activity恢复,你可以重新获得必要的资源和恢复被中断的动作。这些状态转换都是activity的生命周期的部分。
【Creating an Activity】
创建一个activity,你必须创建一个Activity的子类(或者一个Activity的子类的子类)。在你的子类中,你需要实现系统回调的回调方法,当activity在它的生命周期的多种状态中转换的时候,例如当activity被创建、停止、恢复或摧毁。两个最重要的回调方法是:
onCreate()
你必须实现这个方法。系统调用它当创建你的activity的时候。在你的实现中,你应该
初始化你的activity的基本的组件。更重要的是,这里就是你必须调用setContentView()
来定义activity用户接口而已的地方。
onPause()
系统调用这个方法当用户离开你的activity(虽然不总是意味着activity被摧毁)。这通常
是你应该提交任何变化,那此将会超越user session而存在的(因为用户可能不再回来)。
有若干其它生命周期回调函数你应该使用为了提供一个流畅的用户体验,并表操作异常中断会引起你的activity被中断甚至被摧毁。