Android之Activity概述

  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

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);//设置Activit的布局
    }

  (2)配置Activity

 <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android: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

Intent intent=new Intent(MainActivity.this, AboutActivity.class);
                startActivity(intent);

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

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

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

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

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

   









转载于:https://my.oschina.net/caipeng/blog/525676

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值