Android学习笔记----Activity

1、Activity是Android四大组件(Application Components)之一,

     简单来说Activity就是平常所见到的用户界面, 一般情况下,一个Activity所占的窗口是满屏的,但也可以是一个小的位于其它Activity之上的浮动窗口。一个Android工程至少有一个Activity,Activity上面可布有多个view的实例,如文本框、进度条、复选框、按钮等等。多个Activity之间通过Intent来实现跳转。

    注:每新建一个activity,就要继承(extends)Activity类,复写onCreate(bundle)方法,然后绑定此activity的布局文件XML

[java]  view plain copy
  1. public class secondactivity extends Activity {  
  2.   
  3.     @Override  
  4.     protected void onCreate(Bundle savedInstanceState) {  
  5.         // TODO Auto-generated method stub  
  6.         super.onCreate(savedInstanceState);  
  7.         setContentView(R.layout.secondactivity);//绑定布局文件  
  8.     }  
  9.       
  10.   
  11. }  

最后还必须在AndroidManifest.xml里面注册这个新增加的activity

[html]  view plain copy
  1. <activity  
  2.             android:label="second"  
  3.             android:name=".secondactivity" >  
  4.         </activity>  

2、下面为Activity的继承关系,可见Activity继承与Contex类。


3、Activity的生命周期

       其生命周期有如下几种

       onCreate()、onRestart()、onStart()、onResume()、onPause()、onStop()、onDestroy()

注:

一般更新activity,要复写onResume(),然后在里面写更新的处理方法。

onpause方法与onstop方法的区别。

如果第二个activity没有完全遮挡住第一个activity时,如第二个activity是对话框形式到时候。就只调用第一个activity的onpause方法。

当第二个对话框完全遮挡住第一个对话框到时候,即第二个Activity是满屏状态,就会调用第一个Activity的onpause和onstop方法。

另外关于onsume方法,只用来获取用户焦点的(其实就是鼠标点击或者拖动之类的),即当前Activity处于激活状态。

[java]  view plain copy
  1. //第一个activity启动第二个activity的顺序  
  2.   
  3. first activity  
  4. --onpause  
  5. second activity  
  6. --oncreate  
  7. --onstart  
  8. --onresume  
  9. firsr activity  
  10. --onstop//满屏状态  
  11. //--退掉第二个activity的顺序,接上面  
  12. second activity  
  13. --onpause  
  14. first activity  
  15. --onrestart----------------->和oncreate差不多  
  16. --onstart  
  17. --onresume  
  18. second activity  
  19. --onstop  
  20. --ondestroy  

4、Activity之间的跳转与intent、Bundle

     4.1 intent

         

     类层次结构图:

 

    什么是Intent?

             Intent是一个动作的完整描述,包含了动作的产生组件、接收组件和传递的数据信息。可以理解为它是一个信使。当然,也可以将Intent视为一个在不同组件之间仁慈的消息,这个消息在到达接收组件后,接收组件会执行相关的操作。它使得Android系统中互相独立的应用程序组件,成为一个可以互相通信的组件组件集合。因此,无论这些组件是否在同一个应用程序中,Intent 可以将一个组件的数据和动作仁慈给另一个组件

主要常见的用途:1、启动Activity和Service  2、在Android系统上发布广播消息

           

1、 Intent:Android 组件的信使,它可以启动Activity,也可以启动Service,还可以发起一个广播Broadcast。
                                                


2、 Intent由以下几部分组成:动作Action、数据Data、分类Category、类型Type、组件Component、
                                         
                                                  扩展信息Extra,通过这些可以启动其它组件并携带信息。
 

                Intent的几种用法: 
            
                http://www.eoeandroid.com/thread-266-1-1.html


3、 Intent在寻找目标组件的时候有两种方式:一是通过组件名称直接指定,(显示的intent)

                                                                          二是通过Intenet Filter过滤指定。(隐式的intent)


     1) Intent的Component属性:

              Component可以用来查找组件,我们可以根据setComponent()、setClass()、setClassName()来设置组件的名称。
                                                                    通过getComponet(ComponetName componetName)来获取组件


       

    2) Intent的Action属性:
 
          Action是指Intent是指一个要完成的动作,是一个字符串常量。在Intent类里面定义了大师的Action的常量属性,
            例如:ACTION_CALL (打电话)  ACTION_EDIT(编辑数据)  ACTION_VIEW等等,
                        除此之外,我们可以使用setAction()函数来设置IntnetAction属性,使用getAction()来获得Action


       自定义Action

       访问系统Action属性: 


3) Intent的Data属性:是执行动作的URI和MIME类型,不同的Action有不同的Data数据指定


4) Intent的Category属性:执行Action中的附加信息
 
             CATEGORY_LAUNCHER:加载程序时,Activity出现在最上面
       
             CATEGORY_HOME:回到Home界面

5) Intent的Extras属性:添加一些组件的附加信息

系统标准Activity Action应用:打电话、访问浏览器和地图、发邮件


理解Intent的关键之一是理解清楚Intent的两种基本用法:


一种是显式的Intent
,即在构造Intent对象时就指定接收者,这种方式与普通的函数调用类似,只是复用的粒度有所差别;

                          

   显示启动:必须指明启动的Activity所在的类

// 创建一个Intent  应用程序上下文  目标组件

[java]  view plain copy print ?
  1. Intent intent = new Intent(IntentDemo01Activity.this,  
  2.       ActivityToStart.class);  
  3. //显示启动Activity  
  4. startActivity(intent); 

          

另一种是隐式的Intent,即Intent的发送者在构造Intent对象时,并不知道也不关心接收者是谁,

                              这种方式与函数调用差别比较大,有利于降低发送者和接收者之间的耦合。

                                 另外Intent  除了发送外,还可用于广播(广播当然是隐式intent),这些都将在后文进行详细讲述。

              (隐式的intent通过AndroidMainfest.xml中的intent-filter来工作) 是通过Intenet Filter过滤指定。

                  


                  隐式启动:由Android系统根据Intent的动作和数据来决定启动哪一个Activity,只包含需要执行的动作和所包含的数据,(intent-filter)

                               无需指明具体哪一个Activity

    

4.2 其实Bundle就是一个Map,下面是Bundle的构造方法:

            public Bundle() {
                    mMap = new HashMap<String, Object>();
                    mClassLoader = getClass().getClassLoader();
           }

其中一个方法:
    public void putCharSequence(String key, CharSequence value) {
        unparcel();
             mMap.put(key, value);

    }

     Bunddle主要用来传递参数。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值