intent

1、intent描述

    intent是一个对将要进行的操作的抽象描述,主要有三种表现形式:

    通过startActivity启动一个新的Activity

    通过sendBroadcast将intent发送给任何对该intent感兴趣的BroadcastReceiver

    通过startService或者bindService和后台的service进行交互

2、intent详解

    intent中对某个操作的抽象描述主要包含:Action、data、type、category、extras、component

    Action:Android中自定义了许多标准的Action。

        ACTION_MAIN(标记程序的入口activity)

        ACTION_VIEW(显示数据,常和data一起使用)

        ACTION_DIAL(拨号,常和data一起使用)

        ACTION_PICK

        ACTION_EDIT

        ACTION_DELETE

    data:Android中采用URI来表示data。下面是一些action/data对:

        VIEW_ACTOIN content://contacts/     显示所有联系人的列表

        VIEW_ACTOIN content://contacts/1   显示标示符为1的联系人的详细信息

        EDIT_ACTOIN content://contacts/1    编辑标示符为1的联系人的详细信息

        PICK_ACTOIN content://contacts/      显示所有联系人的列表,并允许用户选择一个联系人,把这个联系人返回给父activity。

    type:显式指定intent的数据类型,不知道具体有什么用,不过应用开发时基本也用不到??

    category:表示执行动作的附加信息。

        LAUNCHER_CATEGORY表示intent的接受者应该在Launcher中作为顶级应用出现

        ALTERNATIVE_CATEGORY表示intent是一系列可选动作中的一个。

    extras:其它所有附加信息的集合。经常用来保存一些需要传递给其它activity的额外数据信息。

    component:指定intent的目标组件的类名称。通常Android会根据intent中的其他属性信息,如Action、data、type、category等进行查找,最终找到一个与之匹配的目标组件。但是如果component这个属性有设置的话,将直接使用它所设置的目标组件,而不再执行上述查找过程。

3、activity中intent使用

    //应用程序启动的activity

   

       

           

           

       

   

    //使用category的intent

   

       

                       

           

           

       

   

4、利用intent来广播(BroadcastReceiver)

    广播事件

        public static final String NEW_BROADCAST = "com.android.action.NEW_BROADCAST";

        Intent intent = new Intent(NEW_BROADCAST);

        intent.putExtra( "data" , "test" );

        sendBroadcast( intent );

    广播接收器

        public class MyBroadcastReceiver extends BroadcastReceiver {

            @Override

            public void onReceive( Context context, Intent intent ){

                ...

            }

        }

    注册和注销广播

        //AndroidManifest.xml中注册

       

           

               

           

       

        //代码中注册和注销

        IntentFilter filter = new IntentFilter(NEW_BROADCAST);

        MyBroadcastReceiver broadcastReceiver = new  MyBroadcastReceiver();

        registerReceiver( broadcastReceiver, filter );

        unregisterReceiver( broadcastReceiver );

    

你可能感兴趣的:(Android基础)