zoukankan      html  css  js  c++  java
  • Android_读书笔记_3

    简单的广播与( Intent )接收.

    在Android中很多很多地方都会使用到广播,操作系统使用广播讲信息传递到其他的应用程序中去,也会产生很多设备状态的广播......唉,算了算了,嘿嘿

    一.广播

    Android框架支持的广播有两种类型:普通广播( normal broadcast )和有序广播( ordered boradcast ),

        i> 前者将异步的送达到所有的接收器,没有特定的顺序,而后者则按照一定的顺序依次送达广播事件,接收器可以将事件继续传递给队列中的下一个接收器,也可以对其进行终止。

        ii> 两种广播都具有“黏性”,也就是说在与广播相关的Intent在广播完成后依然存在,所以广播接收器可以通过registerReceiver()方法的返回值获得有效的Intent数据。 

    1.发送广播:

      i>   Context . sendBroadcast() 发送普通广播

      ii>  Context . sendOrderedBroadcast() 发送有序广播

      iii>  Context . sendStickyOrderded() 发送黏性广播

    2.创建广播:

      private static String RECEIVER = "xxx";               //你指定一个独特的标记

      Intent intent = new Intent( RECEIVER );

      sendBroadcast( intent );


    Android操作系统会处理广播的传递,除了某些被保护或者需要一定的许可权限才能创建的广播以外,一般的广播可以被任何应用程序创建。

    二.接收广播

      Android操作系统使用Intent过滤器来将广播与适当的应用程序匹配。为了让程序能够成为一个广播接收器:

      1> 注册接收广播,制定一个特定的Intent过滤器,它将被操作系统用来匹配接收到的广播。

      2> 实现一个广播接收器类( BroadcastReceiver类 ),通过其onReceiver() 回调方法实现自己的事件处理。

    注:    实现的广播接收器类为一个内部类( inner calss )那么它应该被声明为 public static.             //不太理解这个,要是有人懂请一定要给我讲讲

    对于注册广播接收:

      1> 动态注册,实用Contex . registerReceiver() 方法 以及 unregisterReceiver() 方法。动态的注册使得应用程序可以关闭对不能或无需进行处理的广播的监听,通常可以在Activity的onResume()中进行注册,在onPause()回调方法中进行注销(停止监听)。

      2> 静态注册,在Manifest文件中的<application>标记中添加<receiver>标记。

    总的一个简单的实例:

     1 package com.qimu.intent;
     2 
     3 import android.app.Activity;
     4 import android.content.BroadcastReceiver;
     5 import android.content.Context;
     6 import android.content.Intent;
     7 import android.content.IntentFilter;
     8 import android.os.Bundle;
     9 import android.view.View;
    10 import android.widget.Button;
    11 import android.widget.TextView;
    12 
    13 public class MainActivity extends Activity {
    14 
    15     private TextView tv_broad;
    16     private Button bt_broad;
    17     myBroadcastReceiver receiver;
    18     
    19     private static String QIMU_RECEIVER = "xxx";
    20     
    21     @Override
    22     protected void onCreate(Bundle savedInstanceState) {
    23         super.onCreate(savedInstanceState);
    24         setContentView(R.layout.activity_main);
    25         
    26         tv_broad = ( TextView ) findViewById( R.id.tv_broad );
    27         bt_broad = ( Button ) findViewById( R.id.bt_broad );
    28         
    29         bt_broad.setOnClickListener( new View.OnClickListener() {
    30             
    31             @Override
    32             public void onClick(View arg0) {
    33                 
    34                 Intent intent = new Intent( QIMU_RECEIVER );
    35                 intent.putExtra( "broad", "Send Sucess......" );
    36                 sendBroadcast( intent );
    37             }
    38         });
    39     }
    40     
    41     protected void onResume() {
    42         super.onResume();
    43         
    44         receiver = new myBroadcastReceiver();
    45         IntentFilter filter = new IntentFilter( QIMU_RECEIVER );
    46         registerReceiver( receiver, filter );
    47     }
    48     
    49     protected void onPause() {
    50         super.onPause();
    51         
    52         unregisterReceiver( receiver );
    53     }
    54 
    55     public class myBroadcastReceiver extends BroadcastReceiver {
    56 
    57         @Override
    58         public void onReceive(Context context, Intent intent) {
    59             
    60             String _str = intent.getStringExtra( "broad" );
    61             tv_broad.setText( _str );
    62         }
    63     }
    64 }
    Intent广播

    处理系统的广播: 太多太多了,只有谢谢好心人了,嘿嘿,http://blog.chinaunix.net/uid-25370280-id-1735613.html

    期末复习,哎,加油吧......

  • 相关阅读:
    centos6.5下redis的安装与配置
    (函数分治法)实现pow函数(x的y次方幂)
    (数组)大数相乘,相加
    (树)根据排序数组或者排序链表重新构建BST树
    (合并 重叠数组)练习容器的用法
    (动态规划)最小分糖果问题
    (链表)链表的排序问题
    (链表)链表和加法的混合
    (函数)实现strstr函数
    (字符串动态规划)一个字符串变成另一个字符串的步骤数
  • 原文地址:https://www.cnblogs.com/qimumu/p/3785395.html
Copyright © 2011-2022 走看看