1.创建第一个android程序

2.android程序结构的分析

在eclipse集成开发环境中“包资源管理器”展开一个项目:从中可以看出,一个典型的android应用程序包括如下几部分:

① Src目录:源文件文件夹

② Gen目录:保存自动生成的R资源索引类文件夹

③ Android2.3.3目录:androidsdk jar 文件

④ Assets目录:保存原始资源类文件的文件夹

⑤ Res目录:资源文件夹

⑥ Androidmanifest.xml:android应用程序的配置清单文件。

3.Android生命周期

应用程序生命周期是指进程在android系统中从启动到终止的所有阶段;也就是android程序启动到停止的全过程。程序的生命周期由android系统进行调度和控制。

(1)进程的优先级

在android系统中,进程分为高优先级,中优先级,低优先级三类。

Ø 高优先级:前台进程

Ø 中优先级:可见进程,服务进程

Ø 低优先级:后台进程,空进程

① 前台进程

前台进程是与用户正在交互的进程。也是android系统中最重要的进程。处于前台的进程一般包括以下四种情况:

Ø  进程中的activity正在与用户进行交互

Ø 进程服务被activity调用,而且这个activity正在与用户进行交互

Ø 进程服务正在执行生命周期中的回调函数,如Oncreate(),Onstart(),onDestory(),

Ø 进程的brodacastReceiver正在执行onReceiver()函数

Android系统为多任务操作系统,当系统中的多个前台进程同时运行,如果出现资源不足的情况,此时android内核将自动清除部分前台进程,保证最主要的用户界面能够及时的响应操作。

② 可见进程

可见进程是指程序界面一部分能够被用户看到,但不在前台与用户交互,不响应界面事件的进程。如果一个进程包含了service服务,且这个服务正在被用户可见的activity调用,那么该进程就被视为可见进程。

  Android 系统中一般有少量的可见进程,当系统资源不足时,系统会清理少量的可见进程,从而保证前台进程有足够的资源可用。

③ 服务进程

服务进程是指包含已启动service服务的进程。这类进程的特点是没有用户界面,且能够长时间的在后台运行。

Android系统只有在不能够保证前台进程或可视进程具有足够的可用资源时,才会强行清除服务进程

④ 后台进程

后台进程是指没有任何用户可见的activity,且不包含任何已经启动的service服务进程

在android系统中,后台进程的数量较多且重要性低,因此,在系统资源紧张时,android内核将优先清除用户较长时间没有见到的后台进程。

⑤ 空进程

空进程是不包含任何活跃组件的进程,这些组件包括:activity,service,broadcastreceiver,等

当android系统资源紧张时,空进程将会将首先清除。,但并不是直接将其关闭,而是将空进程保存在系统内存中,当用户重新启动该进程时,空进程就会被重新启动,这样可以提供android系统的应用程序的启动速度。

4.Activity的生命周期

Android生命周期是指应用程序的activity从启动到销毁的全过程。

Activity的生命周期是android应用程序设计最重要的内容,直接关系到用户程序的界面和功能

(1)Activity的状态

在activity的生命周期中,一般包括活动,暂停,停止和非活动四种状态:

活动状态:Activity完全能被用户看到,能够与用户进行交互,也就是处于用户界面的最上层

暂停状态:该activity不在处于用户界面的最上层,部分界面不其他activity遮挡,此时该activity不能够与用户进行交互

停止状态:该activity被其他activity全部遮挡,在界面上完全不能被用户看到

非活动状态:在以上三种状态之外的activity则处于非活动状态。

 

 

 

 

Activity的状态

在android系统中采用栈的结构来管理activity,这是一种后进先出的原则。

(2)管理activity的生命周期

在android系统中,一般通过activity的事件回调函数来管理activity的生命周期,这些回调函数如下:

Public class myactivity extends activity{

Protected void onCreate(Bundle savedInstanceState)

Protected void onStart()

Protected void onRestart()

Protected void onResume()

Protected void onPause()

Protected void onStop()

Protected void onDestory()

}

onCreate():Activity启动后第一个被调用的函数,常用来进行Activity的初始化,例如创建Veiw,绑定数据或恢复信息等。

onStart()当Activity显示在屏幕上时,该函数被调用。

onRestart()当Activity从停止状态进入活动状态前,调用该函数

onResume()当Activity能够与用户交互,接受用户输入时,该函数被调用,此时的Activity位于Activity栈的栈顶。

onPause()当Activity进入暂停状态时,该函数被调用,一般用来保存持久的数据或释放占用的资源,

onStop()当Activity进入停止状态时,该函数被调用

onDestory()当Activity被终止时,即进入非活动状态前,该函数被调用。

在Android系统中 ,Activity生命周期,以及各个事件回调函数之间的跳转,如下图所示:

此外,当由于系统资源紧张的时候,Activity可能会被终止,此时,Activity提供了相应的状态保存/恢复的事件回调函数:如下:

onSaveInstanceState():android系统因资源不足终止Activity前调用该函数,用以保存Activity的状态信息,供onRestoreInstanceState()或onCreate()恢复之用。

onRestoreInstanceState():恢复onSaveInstanceState()保存的Activity状态信息,在onStart和onResume()之间被调用。

 

 

(3)Activity生命周期的调用顺序

一般来说,Activity的生命周期可分为全生命周期,可视生命周期和活动生命周期三类。每种生命周期中包含不同的事件回调函数,各个事件的回调函数的调用顺序也不同。

① 对于Activity全生命周期,,事件回调函数的调用顺序为:onCreate()------onStart()---onRestart()--onPause()--onStop()--onDestory()。

调用onCreate()函数分配资源

调用onStart()将Activity显示在屏幕上

调用onResume()获取屏幕焦点

调用onPause(),onStop()和onDestory()释放资源并销毁进程。

② 对与Activity可视生命周期,事件回调函数的调用顺序为:onSaveInstanceState()----onPause()--onStop()--onRestart()--onStart()--onResume()

调用onSaveInstanceState()保存Activity的状态

调用onPause()和onStop(),停止对不可见Activity的更新

调用onRestart()恢复界面上需要的更新信息

调用onStart()和onResume()重新显示Activity,并接受用户交互、

③ 对于活动生命周期,事件回调函数的调用顺序如下:onSaveInstanceState()--onPause()--onResume()。每一步调用的含义如下:

调用onSaveInstanceState()保存Activity的状态

调用onPause()停止与用户交互

调用onResume()恢复与用户的交互

 

 

 

 

 

5.Service的生命周期

在android系统中,Service服务也是一个重要的组件,一个Service服务往往通过调用Context.StartService()启动服务,然后通过调用Context.stopService()停止服务。

如果应用程序多次调用startService()来启动服务,此时停止服务时仅需要调用一次StopService()即可

Service服务也有生命周期,也提供了事件回调函数:

Void onCreate()

Void onStart(Intent intent)

Void onDestory()

Service的生命周期可以分为:全生命周期和活跃生命周期

对于service的全生命周期,是从调用oncreate()到相应地调用ondestory()。Service服务在oncreate()中做一些初始设置,最后在ondestory()中释放所有的资源

对于service的活跃生命周期,是从调用onstart()开始的。这个方法传递参数是传送给startservice()的Intent()对象

注意:在service服务 中,没有停止服务对应的onstop()方法

如果service服务允许其他应用程序绑定到他,则Android还提供了相应的回调实现函数:

IBinder onBind(Intent intent)

Boolean onUnbind(Intent intent)

Void onRebind(Intent intent)

如果service服务允许绑定,onBind()将返回客户端与service通信的通道,onUnbind()方法将停止绑定,onRebind()将使一个新的客户端连接到service。

6.BroadcastReceiver的生命周期

BroadcastReceiver广播接收器是一个重要的android组件。,该组件用法比较简单,仅提供了一个生命周期回调函数:

Void onReceive(Context curcontext,Intent broadcastMsg)

BroadcastReceiver只有两种状态:活跃或者不活跃。

如果android系统调用了onReceive()方法并传递给它包含消息的Intent对象,则该BroadcastReceiver处于活跃状态,当onReceive()处理结束并返回后,该BroadcastReceiver处于不活跃状态。