今天找到了一个Android自学的好资料,{Android学习指南},这是一个大侠的博客,很给力,很详细,个人觉得帮助很大,网址是:http://android.yaohuiji.com/about
本文部分摘自大侠的博客哦,http://android.yaohuiji.com/archives/141,还有的摘自http://emmet1988.iteye.com/blog/1071985
1.Android应用程序的四大组件
Android应用程序是用Java语言编写的,编译后的java代码---包括应用程序要求的任何数据和资源文件,通过aapt(Android Asset Packaging Tool)工具捆绑成一个Android包,归档文件以.apk为后缀。这个文件就类似于塞班系统中我们可以安装的sis或sisx格式的文件一样,可以直接传到Android模拟器或者手机上,它是分发应用程序和安装到移动设备的中介或工具,一个.apk文件中的所有代码被认为ushi一个应用程序。
aapt这个工具在SDK的tools目录下,查看、创建、更新与zip兼容的归档文件,也能将资源文件编译成二进制包。.apk文件,解压缩后,目录结构为:
如果想要更细致的了解aapt,我们可以运行XXXXX\android-sdk-windows\platform-tools目录下aapt.exe文件。
在许多方面,每个android应用程序生活在它自己的世界中:
1.默认情况下,每一个应用程序运行在自己的Linux进程中,当应用程序中的任何代码需要执行时,Android将启动进程;当它不再需要和系统资源被其他应用程序请求时,Android将进程关闭。
2.每个应用程序都有他自己的JMjava虚拟机,因此应用程序代码独立与其他所有应用程序的代码运行。
3.默认情况下,每一个应用程序分配一个唯一的Linux用户的ID。权限设置为每个应用程序的文件仅对用户和应用程序本身可见。
四大组件是:Activity、Service、Broadcast receiver和Content provider
今天只详细学习Activity:
(1)一个活动表示一个可视化的用户界面,关注一个用户从事的事件。例如一个文本短信应用程序可能有一个活动,显示联系人的名单发送信息;第二个活动,写信息给选定的联系人;其他活动,可能重新查看就信息或更改设置。虽然他们一起工作形成一个整体的用户界面,但是每个活动是独立于其他活动的。每个都是作为一个Activity基类的子类实现。
因为几乎所有的activities都是与用户交互的,所以activity类关注创建窗口,可以用setContentView(View)将自己的UI放到里面。然而活动通常以全屏的方式展示给用户,也可以以浮动窗口或嵌入在另一个活动中。有两个方法是几乎所有子类都要实现的:
A. onCreate(Bundle):初始化活动,比如完成一些图形的绘制。最重要的是,在这个方法里通常将用布局资源(layout resource)调用setContentView(View)方法定义的你的UI。
B. onPause():处理当离开你的活动时要做的事情。最重要的是,用户做的所有改变应该这里提交(通常用Content Provider保存数据)。
(2)理解activity生命周期
手机最重要的功能就是打电话,也就意味着电话来的时候,可能要把当前运行的程序暂停,如果电量不足的时候也可能随时要把现有的程序关闭;因此android程序和电脑的程序不同,具体到activity,它的生命周期不是自身控制的,而是有android系统控制的。
在android中activity油四种基本状态:
Running:位于屏幕最前端,此时处于可见状态,和用户可交互的状态。
Paused:当activity被另一个透明的或者非全屏的activity覆盖时的状态叫Paused状态,虽然可见但是不能交互。
Stop:当activity被另外一个activity所覆盖、界面不可见时处于stop状态。
Killed:activity被系统杀死或者根本没启动时就是killed状态。
这个图可以很清楚的表示出activity得生命周期(借来的)
Activity栈:
正在运行的activity处在栈的最顶端,是running状态。
当有新Activity进入屏幕最上端时,原来的Activity就会被压入第二层,如果他的屏幕没有被完全遮盖,那么他处于Pause状态,如果他被遮盖那么他处于Stop状态。
当然不管你出于任何一层,都可能在系统觉得资源不足时被强行关闭,当然关闭时在栈底的程序最先被关闭。
譬如:当你在程序中调用 Activity.finish()方法时,结果和用户按下 BACK 键一样:他告诉 Activity Manager该Activity实例可以被“回收”。随后 Activity Manager 激活处于栈第二层的 Activity 并重新入栈,把原 Activity 压入到栈的第二层,从 Running 状态转到 Paused 状态。
(未完待续……)