【Android的从零单排开发日记】之入门篇(四)——Android四大组件之Activity

在Android中,无论是开发者还是用户,接触最多的就算是Activity。它是Android中最复杂、最核心的组件。Activity组件是负责与用户进行交互的组件,它的设计理念在很多方面都和Web页面类似。当然,这种相似性主要体现在设计思想上。在具体实现方面,Android的Activity组件有自己的设计规范,同时,它能够更简便地使用线程、文件数据等本地资源。

一、Activity 的生命周期

Activity 的生命周期是被以下的函数控制的。

 1 public class Activity extends ApplicationContext {
 2       protected void onCreate(Bundle icicle);
 3       protected void onStart();
 4       protected void onRestart();
 5       protected void onResume();
 6       protected void onFreeze(Bundle outIcicle);
 7       protected void onPause();
 8       protected void onStop();
 9       protected void onDestroy();
10 }
  1. onCreate函数:函数是你进行初始化的地方,这个也是执行setContentView(View)函数的地方,setContentView(View)函数可以传入一个由XML编制的UI界面,可以使UI和具体实现完全分离。
  2. onStart函数:该方法在 onCreate() 方法之后被调用。
  3. onRestart()函数:在 Activity 从 Stop 状态转换为 Active 状态时被调用。
  4. onResume()函数:在 Activity 从 Pause 状态转换到 Active 状态时被调用。
  5. onFreeze()函数:当你的activity被暂停而其他的activity恢复与用户交互的时候这个方法会被调用(在其他activity显示之前)
  6. onPause()函数:当系统要启动一个其他的activity时调用(其他的activity显示之前)
  7. onStop()函数:当另外一个activity恢复并遮盖住此activity,导致其对用户不再可见时调用。
  8. onDestroy()函数:在你的activity被销毁前所调用的最后一个方法。

二、Activity 的配置

  1. 注册Activity,除了系统自动生成的Activity之外,其他的Activity都必须在manifest.xml文件中进行注册

    <activity android:name=".Demo" android:label="@string/app_name"> //.Demo是要注册的Activity名字,当然不在默认包内的话,前面要加上包名。后面的是Activity的名字
    </activity>
  2. 启动另一个Activity

    Intent intent =new Intent(CurrentActivity.this,OtherActivity.class);
    startActivity(intent);

    当然OtherActivity也必须在manifest.xml文件中进行注册。其中intent是一个通信机制,这个以后会专门介绍它。

三、一些关于 Activity 的技巧

  1. 锁定Activity屏幕的运行方向

    <activity android:name=".EX01"
     android:label="@string/app_name"
     android:screenOrientation="portrait">// 竖屏 , 值为 landscape 时为横屏
     </activity>
  2. 全屏的Activity

    // 设置全屏模式
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
        WindowManager.LayoutParams.FLAG_FULLSCREEN);
     // 去除标题栏
     requestWindowFeature(Window.FEATURE_NO_TITLE);
  3. 在Activity的title中加入进度条

    // 不明确进度条
     requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
     setContentView(R.layout.main);
     setProgressBarIndeterminateVisibility(true); 
    
     // 明确进度条
     requestWindowFeature(Window.FEATURE_PROGRESS);
     setContentView(R.layout.main);
     setProgress(5000);
Activity还有更多可以详细讲解的地方,比如它的交互事件,构造菜单、对话框等附加的交互资源以及它的数据结构等等。这些在以后的学习中我们肯定会遇到。所以今天在这里就不再赘述了,只是让大家了解一下它的简单机制。
 
参考文章:(1)android之Activity生命周期   http://www.cnblogs.com/draem0507/archive/2012/11/28/2793332.html
              (2)详解 Android 的 Activity 组件 http://www.ibm.com/developerworks/cn/opensource/os-cn-android-actvt/
 
作者:cpacm
联系方式:QQ 348515494(请注明博客园)
出处:(http://www.cnblogs.com/cpacm/p/3900557.html
版权声明:本文的版权归作者与博客园共有。欢迎转载阅读,转载时须注明本文的详细链接。

【Android的从零单排开发日记】之入门篇(四)——Android四大组件之Activity

时间: 2024-10-17 01:11:55

【Android的从零单排开发日记】之入门篇(四)——Android四大组件之Activity的相关文章

【Android的从零单排开发日记】之入门篇(六)——Android四大组件之Broadcast Receiver

广播接受者是作为系统的监听者存在着的,它可以监听系统或系统中其他应用发生的事件来做出响应.如设备开机时,应用要检查数据的变化状况,此时就可以通过广播来把消息通知给用户.又如网络状态改变时,电量变化时都可以通过广播来通知用户.要做比喻的话,广播就像是我们的感官,能够有效且快速的从外界获取信息来反馈给自身. 一.广播的功能和特征 广播的生命周期很短,经过 调用对象—实现onReceive—结束 整个过程就结束了.从实现的复杂度和代码量来看,广播无疑是最迷你的Android 组件,实现往往只需几行代码

【Android的从零单排开发日记】之入门篇(三)——Android目录结构

本来的话,这一章想要介绍的是Android的系统架构,毕竟有了这些知识的储备,再去看实际的项目时才会更清楚地理解为什么要这样设计,同时在开发中遇到难题,也可以凭借着对Android的了解,尽快找出哪些模块和设计能够帮助解决该问题.但想了一下,这毕竟是入门篇,若没有实际项目开发经验的人看了之后肯定是一头雾水,所以就决定将其搁浅到大家熟悉Android之后再为大家介绍. 那么今天的主题是Android的目录结构,将系统架构比作人的骨骼架构的话,目录结构就像是人的各个器官,彼此功能各不相同,却能有序地

【Android的从零单排开发日记】之入门篇(五)——Android四大组件之Service

这几天忙着驾校考试,连电脑都碰不到了,今天总算告一段落了~~Service作为Android的服务组件,默默地在后台为整个程序服务,辅助应用与系统中的其他组件或系统服务进行沟通.它跟Activity的级别差不多,但不能自己运行只能后台运行.service可以在很多场合的应用中使用,比如播放多媒体的时候用户启动了其他Activity这个时候程序要在后台继续播放,比如检测SD卡上文件的变化,再或者在后台记录你地理信息位置的改变等等, 总之服务总是藏在后台的. ps:Service运行在主线程中的,所

【Android的从零单排开发日记】之入门篇(八)——Android数据存储(下)

废话不多说了,紧接着来讲数据库的操作吧.Come On! 提到数据存储问题,数据库是不得不提的.数据库是用来存储关系型数据的不二利器.Android为开发者提供了强大的数据库支持,可以用来轻松地构造基于数据库的应用.Android的数据库应用,依托于当下最流行的开源嵌入式数据库SQLite.在Android中,应用的数据库文件是该应用私有的,存储在应用数据目录下的databases子目录内.从代码结构来看,Android的数据库实现可以分成两个层次,在底层通过C++调用SQLite的接口来执行S

【Android的从零单排开发日记】之入门篇(七)——Android数据存储(上)

在讲解Android的数据源组件——ContentProvider之前我觉得很有必要先弄清楚Android的数据结构. 数据和程序是应用构成的两个核心要素,数据存储永远是应用开发中最重要的主题之一,也是开发平台必须提供的基础功能.不光是在Android平台上,在其他的平台上,数据的存储永远是不可缺少的一块.Android的数据存储是构建在Linux的文件系统上,它充分利用Linux的账号系统来限定应用对数据的访问,部署了一套安全和灵活并重的数据存储解决方案.Android的文件框架,以及各种数据

【Android的从零单排开发日记】之入门篇(一)——开发环境的搭建

写给自己的话:至此,大学的时光已经剩下一年的时光,下一年等毕业设计结束后就算是正式地踏入社会.自己学android也不过几个月的时间,为了更好管理文档,写点东西记录下自己曾经做过的点点滴滴是一个不错的选择,接下来都会将我自己所学所感一一记录下来,算是给后来的我一份复习的资料和还算不错的回忆. 开始正题吧,android环境的安装,网上很多教程,本来不想写这章的,后来帮同学配置时想想有个总结也是不错的,所以就写了这篇满是链接的文章. 一.需要准备的文件 JDK 官方网站 http://www.or

【Android的从零单排开发日记】——Android四大组件之ContentProvider

数据源组件ContentProvider与其他组件不同,数据源组件并不包括特定的功能逻辑.它只是负责为应用提供数据访问的接口.Android内置的许多数据都是使用ContentProvider形式,供开发者调用的(如视频,音频,图片,通讯录等).如果把第三方应用比作一个黑盒子的话,ContentProvider就像是从里面延伸出来的管道,从这个管道,应用可以把一些数据共享出来,我们也可以往里面输送数据.但是里面怎么处理数据我们看不到,也管不着.并且这个管道是有规范标准的,不是它规定的数据你塞不进

【Android的从零单排开发日记】之入门篇(九)——Android四大组件之ContentProvider

数据源组件ContentProvider与其他组件不同,数据源组件并不包括特定的功能逻辑.它只是负责为应用提供数据访问的接口.Android内置的许多数据都是使用ContentProvider形式,供开发者调用的(如视频,音频,图片,通讯录等).如果把第三方应用比作一个黑盒子的话,ContentProvider就像是从里面延伸出来的管道,从这个管道,应用可以把一些数据共享出来,我们也可以往里面输送数据.但是里面怎么处理数据我们看不到,也管不着.并且这个管道是有规范标准的,不是它规定的数据你塞不进

【Android的从零单排开发日记】之入门篇(十一)——Android的Intent机制

继续我们的Android之路吧.今天我要介绍的是Android的Intent. 对于基于组件的应用开发而言,不仅需要构造和寻找符合需求的组件,更重要的是要将组件有机的连接起来,互联互通交换信息,才能够最终提供应用所期望的服务.而为了能够更好地实现组件复用,充分地利用每一个组件的能力,就需要这些组件连接的模式足够灵活和统一,并且可以进行动态地扩展.所以Android提供了利用Intent对象建立连接并实现组件通信的模式.Intent对象是Android组件连接的核心,集中体现了整个组件连接模型的设