Android学习笔记—第三章Intent意图

第三章 Intent 意图

我们提供的服务有:网站设计、做网站、微信公众号开发、网站优化、网站认证、天峨ssl等。为成百上千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的天峨网站制作公司

    Intent对象主要用来在Android程序的Activity、Service和BroadcastReceiver这三大组件之间传输数据。Intent分显示意图和隐式意图两种。

  1. 通过Intent对象跳转界面,在不同界面间传输数据:

    a. 显示意图方式:代码中指明具体的跳转方向

    Intent intent = new Intent();         //创建一个Intent对象

    intent.setClass(Activity1.this,Activity2.class);    //指明跳转方向

    intent.putExtra("key1","value1"); //传递数据。key表示数据的索引,vlaue表示要传输的数据

    intent.putExtra("key2","value2");

    ......                           //可以同时传递多个数据,以不同的key值区分

    startActivity(intent);          //无需返回结果方式开启Activity

    startActivityForResult(intent,requestCode);  //带返回结果的方式开启Activity

    备注:startActivity()和startActivityForResult()根据实际情况任选一种方式。其中,startActivityForResult()中的requestCode参数用于区分是通过当前Activity中的哪一个组件开启的Activity跳转。例如:假设当前Activity 1中有两个按钮buttonA和buttonB,点击两个按钮均跳转到Activity 2,此时requestCode即用来区分开启的Activity跳转的是点击了buttonA还是点击了buttonB。跳转之后,在所跳转的Activity 2中接收数据的操作如下:

    Intent intent = getIntent();    //获取Intent对象

    intent.getXXX("key");           //通过intent对象获取数据。其中,getXXX("key")方法中,                                     XXX表示的是所传递的数据的数据类型,key要与传递数据时                                   putExtra()方法中对应数据的key值相同。

    如果所使用的跳转方式是startActivityForResult(),则还可以在跳转之后的Activity 2中使用putExtra()方法设置返回结果的值,然后使用setResult(resultCode,intent)方法设置返回标识。其中,requestCode参数与resultCode作用类似,只是方向相反,即从Activity 2→Activity 1。

    之后,可在Activity 1中重写onActivityResult(int requestCode,int resultCode,Intent data)方法中获取返回值并进行操作。

    b. 隐式意图方式:代码中没有指明具体方向,而是在清单文件中配置过滤条件

    <intent-filter>

        <action android:name="xxx"/>

        <category android:name="android.intent.category.DEFAULT"/>

    </intent-filter>

  2. 通过Intent对象启动Service服务的步骤

    a. 创建一个类MyService继承Service

    b. 创建Intent对象,方向指向所创建的类MyService

    Intent intent = new Intent(this,MyService.class);

    c. 使用startService()方法直接启动服务

    startService(intent);

    d. 通过bindService()方法绑定服务,进而启动服务

    //先创建一个ServiceConnection对象

    ServiceConnection conn = new ServiceConnection();

    //使用bindService()方法,参数Context.BIND_AUTO_CREATE表示如果服务不存在,则自动创建一个

    bindService(intent,conn,Context.BIND_AUTO_CREATE);

    c. 停止服务

    stopService(intent);

    d. 解绑服务

    unbindService(conn);

  3. 通过Intent对象发送广播步骤

    a. 在要发广播的Activity中,创建Intent对象

    Intent intent = new Intent();

    b. 调用setAction()方法设置过滤条件

    intent.setAction("xxx");

    c. 发送广播

    sendBroadcast(intent);

    d. 在接收广播的Activity中创建一个类MyReceiver继承BroadcastReceiver

    e. 在接收广播的Activity中用代码注册广播

    IntentFilter filter = new IntentFilter();

    filter.addAction("xxx");   //参数xxx要与intent.setAction()设置的参数一致

    或者在清单文件中注册广播

    <intent-filter>

        <action android:name="xxx">

    </intent-filter>

    f. 在接收广播的Activity中创建一个MyReceiver对象

    MyReceiver receiver = new MyReceiver();

    g. 注册广播

    registerBroadcas(filter,receiver);

    h. 注销广播

    unregisterBroadcast(receiver);

文章标题:Android学习笔记—第三章Intent意图
本文地址:https://www.cdcxhl.com/article44/jcpeee.html

成都网站建设公司_创新互联,为您提供网站制作网页设计公司网站营销网站改版移动网站建设微信公众号

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

手机网站建设