1. Activity引言

    在Android中,一个Acitvity作为一个显示在屏幕上的用户交互界面。比如在电子邮件应用中,一个用来显示收件列表的Activity,一个用来写邮件的 Activity,一个阅读邮件内容的Activity等等。Activity用来提供用户体验,许多不同体验的Activity聚集在一起即可以形成 一个Android应用程序的用户体验,每一Activity都是相互独立的。应用除了可以访问自己的Activity,也可以访问其他Application的 Acitivity(这个取得其它Application的权限)。在Android应用中,可以有多个Activity,这些Activity组成了Activity stack,当前活动的Activity位于topStack,之前的Activity被压入下面,成为非活动Activity,等待是否可能被恢复为活动状态。下面来介绍Activity的几个生命状态。

2.Activity的几个回调方法

1).onCreate()

当Acitivity第一次被创建时触发,一般在这里要做的事情包括创建视图(setContentView())、向视图填充必要的数据等等。此方法必须要重写。

2). onRestart()

这个我比较少用到,按文档上的介绍,如果Activity之前被stop过,那么下一次onStart()方法之前会先触发这个方法。

3).onStart()

只要Activity从不可见变成可见,就会触发到这个方法,但被AlertDialog遮挡/显示的情况不算在内。

4).onResume()

当Activity来到最上层的时候,也就是开始与用户直接交互时,触发这个方法。例如本来Activity被一个AlertDialog遮挡,当这个AlertDialog消失时,onResume()方法就被触发。

5).onPause()

和onResume()的触发条件刚好相反,如果Activity本来在最上层,当它要让出最上层的位置时会触发这个方法。onPause()和onResume()是被触发最频繁的两个方法,所以在这里不应该执行过于消耗资源的方法。

6).onStop()

当有其他Activity覆盖了当前Activity时,不论另一个Activity是新开始的还是从下层移至最上层的,当前Activity的onStop()方法都会被触发。当系统任务用户离开此界面时会调用此方法,此时并非销毁一个Activity。通常在这里就要处理一些持久超越用户会话的变化,比如:数据的保存。

7).onDestroy()

Activity生命周期的终点。有两种情况会导致它被触发:

(1)执行了Activity.finish()方法;

(2)Android系统由于资源 不足等原因决定杀掉Activity所在进程。通过isFinishing()方法可以判断出是哪种情况。在这个方法里,我们一般要做的事情是释放 Activity占有的资源,例如后台正在进行的下载线程等等。

3.实例

(1)创建Activity

publicclassMainActivityextendsActionBarActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//设置Activit的布局}

(2)配置Activity

<activityandroid:name=".MainActivity"android:label="@string/app_name"><intent-filter><actionandroid:name="android.intent.action.MAIN"/><categoryandroid:name="android.intent.category.LAUNCHER"/></intent-filter></activity>/*多种属性android:icon="图标"android:name="实现类"android:theme="应用的主题"android:label="说明性文字"android:android:.......*/

<activity>还提供各种intent-filter,使用<intent-filter>来声明其它应用组件如何激活(启 动)Activity,<intent-filter>有包含<action>和<category>两个元素。

如上例中<action android:name="android.intent.action.MAIN" />用来表示此Activity需要响应android.intent.action.MAIN(表明为应用程序的主要入口),<category android:name="android.intent.category.LAUNCHER" /> 表示Activity为LAUNCHER类别,即应用程序会列在Launcher中,允许用户直接启动。以上也是一个应用的主activity 所必须的声明方法:一个MAIN action,和一个LAUNCHER category。如果要Activity响应其他应用的隐式的intent,则需要为Activity声明对应action,还可以添加categor 和data。

(3)启动Activity

Intentintent=newIntent(MainActivity.this,AboutActivity.class);startActivity(intent);

(4)关闭Activityhttp://my.oschina.net/u/1433837/admin/new-blog

Activity可以调用finish()方法关闭自己,也可以通过调用finishActivity()的方法关闭一个独立的之前启动的Activity。关于何时关闭一个Activity,一般由系统直接为我们管理。但是当你确认用户不用返回到此Activity时,我们调用以上方法关闭对应的Activity。

  • 第一种方法是调用其本身的finish()方法

//关闭Activityfinish();
  • 第二种方法调用finishActivity()的方法关闭一个独立的之前启动的Activity。

//此方法用在关闭使用startActivityForResult(requestCode)启用的Activitythis.finishActivity(requestCode);










更多相关文章

  1. 简洁、高效、可自定义的开源的Android评论控件---CommentView
  2. Android轮播图控件CustomBanner的使用讲解
  3. Android(安卓)Java 中Thread与Runnable的区别
  4. Android自定义属性时TypedArray的使用方法
  5. Android(安卓)中报错 W/System.err: android.os.NetworkOnMainTh
  6. android jni (jni_onload方式)
  7. Android热修复框架AndFix核心代码分析并改进
  8. 浅谈Java中Collections.sort对List排序的两种方法
  9. Python list sort方法的具体使用

随机推荐

  1. 选择器权重及伪类选择器练习
  2. 简单的登陆表单、后台框架、元素样式来源
  3. css选择器权重、伪类选择器计算方式
  4. HTML入门之常用伪类选择器的使用方法总结
  5. laravel数据库查询结果自动转数组修改实
  6. 选择器知识汇总
  7. PHP并发场景的三种解决方案代码实例
  8. 常用伪类选择器的实例演示及参数
  9. Android中ActionBar及Overflow的显示
  10. Android(安卓)Relative Layout 安卓相对