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();
    }
    

     

      

     

      

     

     

  • 相关阅读:
    c# 类成员的定义 定义方法、字段和属性
    Set Rowcount分页查询(转)
    Sql 学习笔记
    xen与kvm 天高地厚
    Linux_free(buffer与cache区别) 天高地厚
    快照技术 天高地厚
    磁盘阵列的状态与种类 天高地厚
    在linux中使用ramdisk文件系统 天高地厚
    oracle逻辑读取 天高地厚
    BeginInvoke和EndInvoke操作线程 天高地厚
  • 原文地址:https://www.cnblogs.com/jubincn/p/3448760.html
Copyright © 2011-2022 走看看