第四章 意图(Intent)

版权声明:未经王小波同学允许不得转载本文内容,否则将视为侵权;博主qq:1419758909;反正也没人转载~ https://blog.csdn.net/qq_38900441/article/details/84898014

第四章   意图(Intent)

终端用户用于开发应用程序交互功能的组件:广播接收器、意图、适配器、内容提供器

Intent由动作(action)、数据(Data)、分类(Category)、类型(Type)、组件(Component)、扩展(Extra)组成

 Action属性用于描述Intent要完成的动作,对执行的动作进行一个简要描述

Data执行动作的URI和MIME类型

Category指明一个执行Action的分类

Component的属性用于指明Intent的目标组件的类的名称

Extra用于添加一些附加信息(可以利用该属性进行消息传递) --将信息存放到Extra属性有两种方式:一是直接将信息添加到Extra属性中,另一种是将数据封装到Bundle包中

显示Intent:

Inten intent=new Intent();

intent.setClass(Activity1.this,activity.class);

隐式通过Intent Filter过滤实现的 

Extra属性 

Intent intent=new Intent();

intent.putExtra("name","wanglibo");

意图实现跳转

MainActivity.java

public class MainActivity extends AppCompatActivity {
    public void onCreate(Bundle saveInstanceState){
        super.onCreate(saveInstanceState);
        setContentView(R.layout.activity_main);
        Button btnjump=(Button)findViewById(R.id.jump);
         btnjump.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {
              Intent intent =new Intent();
              intent.setClass(MainActivity.this,SecondActivity.class);
              startActivity(intent);
          }
      });
    }
}

SecondActivity.java

public class SecondActivity extends Activity {
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        Button btn_back=(Button)findViewById(R.id.returnBack);
        btn_back.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent myinten=new Intent();
                myinten.setClass(SecondActivity.this,MainActivity.class);
                startActivity(myinten);
                SecondActivity.this.finish();
            }
        });
    }
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="first activity"/>

    <Button
        android:id="@+id/jump"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="跳转"
        />
</LinearLayout>

activity_second.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="match_parent">
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="second activity"/>
    <Button
        android:id="@+id/returnBack"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="返回"/>

</LinearLayout>

 实现广播和接收Intent机制步骤:

1、注册相应广播接收器,广播接收器就是接收广播消息并对消息作出响应的组件

2、发送广播,将消息内容和用于过滤的信息封装起来,广播给广播接收器

3、满足条件的广播接收器执行接受方法onReceiver()

4、销毁广播接收器。

activity的sendBroadcast()、sendOrderBroadcast()、sendStrikyBroadcast()都可以广播Intent到广播接收器

Intent的过滤机制
      Intent过滤器是用来通知系统它们能够处理哪种类型隐式的 Intent对象, Activity、Service、 Broadcast Receiver能够有一个或多个 Intent过滤器。每个过滤器都描述了组件的一种能力,说明了组件将会接受的 Intent对象集。它滤如有效的期望类型的 Intent对象,滤出不想要的 Intent对象。隐式的 Intent对象仅能发送给能够通过组件的一个过滤器来传递它的一组件
         一个 Intent过滤器是 IntentFilter类的实例。 Intent过滤器通常都不是用Java代码来建立的,而是在应用程序的清单文件( AndroidManifest. xml)中用< -intent-filter>元素来声明。
        过滤器有类似于 Intent对象的动作、数据、和分类的字段,过滤器会用这三个域来检测个隐式的 Intent对象。对于要传递给拥有过滤器的组件的 Intent对象,必须传递所有的这三个要检测的字段。如果其中之一失败了, Android系统也不会把它发送给对应的组件-至少在基于那个过滤器的基础上不会发送
 

Android广播机制指的是,可以通过实现广播接收器来监听和响应这些广播的Intent。

通常广播Intent用于向监听器通知系统给事件或应用程序事件,从而扩展应用程序间的事件驱动的编程模型。

广播Intent可以使应用程序更加开放,通过使用Intent来广播一个事件,可以在不用修改原始应用程序的情况下,对事件作出响应。

Android中大量使用广播Intent来广播系统事件,如电池电量、网络连接和来电。
 

下一篇第五章 服务(Service)

猜你喜欢

转载自blog.csdn.net/qq_38900441/article/details/84898014
今日推荐