zoukankan      html  css  js  c++  java
  • Android 4 学习(13):Local Broadcast Manager & Intent Filter

    参考《Professional Android 4 Development

     

    Local Broadcast Manager 简介

    Local Broadcast ManagerAndroid Support Library引入,用于实现应用程序内部Broadcast的发送和处理。因为监听范围缩小了,所以Local Broadcast既比全局的Broadcast高效,又同时保护信息不被其他应用程序获取,提升了安全性。使用Local Broadcast Manager之前,首先要将Android Support Library引用到应用程序中。

     

    PendingIntent简介

    使用PendingIntent,其他应用程序可以在一段时间后代理此程序处理相应的Intent

     

    int requestCode = 0;
    int flags = 0;
    // Start an Activity
    Intent startActivityIntent = new Intent(this, MyOtherActivity.class);
    PendingIntent.getActivity(this, requestCode, startActivityIntent, flags);
    // Start a Service
    Intent startServiceIntent = new Intent(this, MyService.class);
    PendingIntent.getService(this, requestCode, startServiceIntent , flags);
    // Broadcast an Intent
    Intent broadcastIntent = new Intent(NEW_LIFEFORM_DETECTED);
    PendingIntent.getBroadcast(this, requestCode, broadcastIntent, flags);
    

     

    使用Intent Filters

    Manifest文件中,将intent-filter标签添加到相应ActivityService的Manifest Node中,即可创建一个Intent Filter,其中可以包括这些子标签:

    • Action
    • Category
      • ALTERNATIVE
      • SELECTED_ALTERNATIVE
      • BROWSABLE
      • DEFAULT
      • HOME
      • LAUNCHER
      • Data
    <activity android:name=”.MyBlogViewerActivity”>
      <intent-filter>
        <action android:name=”android.intent.action.VIEW” />
        <category android:name=”android.intent.category.DEFAULT” />
        <category android:name=”android.intent.category.BROWSABLE” />
        <data android:scheme=”http” android:host=”blog.radioactiveyak.com”/>
      </intent-filter>
    </activity>
    

    Intent Filter的运作机制

    1. Android将所有应用的Intent Filter汇总到一个列表中。

    2. 将与ActionCategory不匹配的Intent Filter从列表中删除。

      a) Action必须完全匹配

      b) 只有包含所有的CategoryFilter才会被匹配

    3. Intentdata URI的每个部门都将与Intent Filterdata标签进行匹配,只有每个部分都对应才能被匹配。若Intent Filter中没有data tag,则可以匹配任意Intent中的Data

    4. 如果某个Intent最终被多个Intent Filter截获,则将由用户选择处理方式。

    获取应用程序截获的Action及其数据

    Intent Filter截获Intent后,可以使用这种方式获取Action及数据:

     

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Intent intent = getIntent();
        String action = intent.getAction();
        Uri data = intent.getData();
    }
    

     

      

     

      

     

     

  • 相关阅读:
    Windows10右键添加“在此处打开命令窗口"
    赋值简单理解
    应用 EditPlus 配置 Java 编译环境
    进程和线程的区别
    Java栈与堆
    进程与线程的简单解释
    java的多态性(二)
    内部类详解(很详细)
    java的super和this关键字用法总结
    Java类成员(成员变量和方法)的覆盖与隐藏归纳
  • 原文地址:https://www.cnblogs.com/jubincn/p/3448760.html
Copyright © 2011-2022 走看看