Android基本程序单元Activity总结

1、什么是Activity?

在Android当中,Activity提供可视化的用户界面,一个Android应用通常由多个Activity组成。多个Activity组成了Activity栈(Stack),当前活动的Activity处于栈顶。Activity有自己的生命周期,由Android系统来控制。在Activity中包含一个window对象,在window当中通常包含一个布局容器对象(如LinearLayout布局对象),在布局对象中包含了我们之前讲解的各种UI组件。和HTML DOM一样,Android的Activity也是一个具有严格层次结构的,类似于树形的对象结构。

2、回调
C、C++、Java Script中的回调是通过指针来实现的;但是Java中不允许直接操作指针,回调是通过接口来实现的。接口(系统框架)是系统提供的,接口的实现使用户实现的。系统通过在不同的状态“回调”我们的实现类来达到接口和实现的分类。(Activity接口)

3、如何创建自己的Activity?(三步走)

MyActivity.java → activity_my .xml → 在AndroidManifest.xml中的相应注册 或者 new→Android Activity

第一步:在相应的布局文件中定义显示布局;
第二步:定义Activity类是,继承Activity,并求重写onCreate()方法
- 找到对应的xml布局文件:setContentView(R.layout.main)
- 通过findViewById找到相应控件对象:btn = (Button)this.findViewById(R.id.button01);
第三部:在AndroidManifest.xml中注册。

补充:
1 )、每一个Activity 都必须继承自 Activity类;
2 )、必须实现Activity类的 onCreate()方法(应用程序在初始化 Activity时,调用的其中的一个回调方法,在该方法中定义如何展示自己创建的 Activity,即Activity 里面有什么内容);
3 )、每一个Activity 的信息都必须配置到项目中一个核心的配置文件 (AndroidManifest.xml)中的Application 结点下;当我们把自己创建的 Activity注册到AndroidManifest.xml 配置文件中时,系统就可以通过该配置文件找到相应的 Activity;配置项如下:

1 )-------------------------------------------  
 startActivity(new Intent(MainActivity.this,MyActivity.class)); //从当前MainActivity跳转到MyActivity
    核心代码:
     public void onClick(View view){
              Intent intent = new Intent();
              intent.setClass(MainActivity. this , MyActivity. class);
          //  Intent intent = new Intent(MainActivity. this , MyActivity. class);
              MainActivity. this.startActivity(intent);
       }
2 )-----------------------------------------------   
startActivity(new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.baidu.com"))); 
//从当前MainActivity跳转到网址http://www.baidu.com

实例:(点击button按钮,从SecondActivity跳转到FirstActivity)
这里写图片描述

6、Activity之间传递数据
(后面的文章会给出一个关于Activity之间传递数据的具体应用实例:在注册一个系统会员的时候经常需要多个步骤,我们经常使用“上一步”,“下一步”来完成,那么当用户在返回“上一步”时应如何保存信息呢?

1 )、传递简单数据可以只用Intent;
2)、传递数据包时就要用到Bundle和Intent了; 使用对象Bundle,将要传递的信息封装到对象Bundle中,并通过Intent对象传递到另一个Intent中。
3 )、传递自定义值对象:如传递一个自定义的User,要用到序列化的类Serializable或Parcelable。

 用法:(核心代码)
          //MainActivity中
           Bundle bundle= new Bundle();
           bundle.putString( "keyname", keyvalue);
           Intent intent = new Intent(MainActivity.this,MyActivity .class );
           intent. putExtra(bundle);

          //MyActivity中
          Intent intent=getIntent();
          Bundle bundle=intent.getExtras();
          String keyvalue=bundle.getString( "keyname");

          另一种方法:
          //MainActivity中
           Bundle bundle= new Bundle();
           bundle.putString( "keyname1", keyvalue1);
           bundle.putString( "keyname2", keyvalue2);
           bundle.putString( "keyname3", keyvalue3);
           Intent intent = new Intent(MainActivity.this,MyActivity .class );
           intent. putExtra("key",bundle);

          //MyActivity中
          Intent intent=getIntent();
          Bundle bundle=intent.getBundleExtras("key");
          String keyvalue1=bundle.getString( "keyname1");
          String keyvalue2=bundle.getString( "keyname2");
          String keyvalue3=bundle.getString( "keyname3");

实例:(在MainActivity中要求输入用户名称,通过用户名称查询用户联系方式信息,并在ResultActivity中显示。)
MainActivity.java
这里写图片描述

ResultActivity.java
这里写图片描述

7、Activity的生命周期

1).启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。
2).当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂停当前Activity的执行。(onPause方法用来持久保存数据)
3).当前Activity由被覆盖状态回到前台或解锁屏:系统会调用onResume方法,再次进入运行状态。
4).当前Activity转到新的Activity界面或按Home键回到主屏,自身退居后台:系统会先调用onPause方法,然后调用onStop方法,进入停滞状态。
5).用户后退回到此Activity:系统会先调用onRestart方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态。
6).当前Activity处于被覆盖状态或者后台不可见状态,即第2步和第4步,系统内存不足,杀死当前Activity,而后用户退回当前Activity:再次调用onCreate方法、onStart方法、onResume方法,进入运行状态。
7).用户退出当前Activity:系统先调用onPause方法,然后调用onStop方法,最后调用onDestory方法,结束当前Activity。
我们可以自己定义当处于什么状态的时候做什么事件。
这里写图片描述

在Activity跳转过程中发生的生命周期变化(点击A中的按钮跳到B):
1、B为一个Activity时
A onCreate→A onStart→A onResume→(点击按钮进入B界面)→A onPause→B onCreate→B onStart→B onResume→A onStop;
2、B为一个对话框(dialog)时
A onCreate→A onStart→A onResume→(点击按钮进入B对话框)→A onPause→B onCreate→B onStart→B onResume→(点击空白处回到A界面)→B onPause→A onResume→B onStop→B onDestory;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值