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

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

Android_读书笔记_3

时间: 2024-10-05 02:51:56

Android_读书笔记_3的相关文章

《MySQL必知必会》读书笔记_3

PS:这次的信息量有点大. 聚集不同值 SELECT AVG(DISTINCT prod_price) AS avg_price FROM products WHERE vend_id = 1003 #相同的值不会被计算 组合聚集函数 SELECT COUNT(*) AS num_items, MIN(prod_price) AS price_min, MAX(prod_price) AS price_max, AVG(prod_price) AS price_avg FROM products

Android_读书笔记_2

感觉Service有些纠结,不知道是不是因为书本的原因,书上的例子一个都没成功,看的也是晕头转向的. 一同提到了4个东西,前面嘛自然是那些巴拉巴拉的介绍,直接正题. 重点: 1.创建一个服务(Service); Android中Service是一个很重要的元素之一,一个 "服务"涉及到Service类的继承,以及在AndroidManifest.xml中添加相关权限许可代码 再者就是 Service类的基础方法,onCreate(), onBind(), onStart(), onSt

Android_读书笔记_1

线程及异步操作 大体上阐述了异步处理的重要性,以及什么时候应该用异步处理等等巴拉巴拉...... 重点: 1: AsyncTask类的介绍及例子...... 通过继承AsyncTask类并实现其定义的事件方法,管理后台操作. 很方便的是AsyncTask类已经为异步操作创建好了一个简单的接口,我们只需实现这个接口就可以很快捷的实现异步操作. 并且在最新的几个SDK中,它能够通过若干个物理内核和一个内部线程池来同时管理多个任务. 包括: onPreExecute()方法在后台操作开始前运行在UI线

《C#图解教程》读书笔记之三:方法

本篇已收录至<C#图解教程>读书笔记目录贴,点击访问该目录可获取更多内容. 一.方法那些事儿 (1)方法的结构:方法头-指定方法的特征,方法体-可执行代码的语句序列: (2)方法的调用:参数.值参数.引用参数.输出参数.参数数组: ①参数: 形参-本地变量,声明在参数列表中:形参的值在代码开始之前被初始化: 实参-实参的值用于初始化形参: ②值参数: 为形参在栈上分配内存,将实参的值复制到形参: ③引用参数: 不为形参在栈上分配内存,形参的参数名作为实参变量的别名指向同一位置,必须使用ref关

《C#图解教程》读书笔记之五:委托和事件

本篇已收录至<C#图解教程>读书笔记目录贴,点击访问该目录可获取更多内容. 一.委托初窥:一个拥有方法的对象 (1)本质:持有一个或多个方法的对象:委托和典型的对象不同,执行委托实际上是执行它所"持有"的方法.如果从C++的角度来理解委托,可以将其理解为一个类型安全的.面向对象的函数指针. (2)如何使用委托? ①声明委托类型(delegate关键字) ②使用该委托类型声明一个委托变量 ③为委托类型增加方法 ④调用委托执行方法 (3)委托的恒定性: 组合委托.为委托+=增加

《Effective C++》读书笔记汇总

我之前边读<Effective C++>边写下每个条款的读书笔记,这一版是C++11之前的版本.这里我将每个条款令我印象深刻的点小结一下. 1.C++包括:Plain C(面向过程).OOP(面向对象).模板(泛型和模板元编程).STL(C++标准库). 2.用inline.enum.const代替#define.#define定义的宏,一旦复杂起来,高手都很难掌控.不要带入C的习惯. 3.灵活使用const前缀.不需要进行改变的数据加上const前缀.指针的const前缀有两种形式,cons

【读书笔记】《Linux内核设计与实现》内核同步介绍&内核同步方法

简要做个笔记,以备忘. 需同步的原因是,我们并发访问了共享资源.我们将访问或操作共享资源的代码段称"临界区",如果两个执行线程处于同一临界区中同时执行,称"竞争条件".这里术语执行线程指任何正在执行的代码实例,如一个在内核执行的进程.一个中断处理程序或一个内核线程. 举个简单例子,i++操作.该操作可以转换为下面的机器指令序列: 1.得到当前变量i的值,并保存到一个寄存器. 2.将寄存器的值加1. 3.将i的新值写回到内存中. 当两个线程同时进入这个临界区,若i初值

鸟哥的Linux私房菜 基础学习篇读书笔记(7):Linux文件与目录管理

这一章主要讲述的是如何操作与管理Linux系统中的文件和目录,主要包括目录间的切换,目录的创建与删除,文件的创建与删除,文件的查找,文件内容的查看等等. 前一章中已经讲过相对路径以及绝对路径,绝对路径就是指从根目录("/")开始写起的路径名,而相对路径绝不会由根目录开始写起,相反,相对路径是相对于当前工作目录的路径名.Linux操作系统中有几个特殊的目录: . 代表此层目录: .. 代表上一层目录: - 代表前一个工作目录: ~ 代表当前用户身份所在的主文件夹: ~account 代表

《30天自制操作系统》读书笔记(2)hello, world

让系统跑起来 要写一个操作系统,我们首先要有一个储存系统的介质,原版书似乎是06年出版的,可惜那时候没有电脑,没想到作者用的还是软盘,现在的电脑谁有软驱?不得已我使用一张128M的SD卡来代替,而事实上你用的是U盘还是软盘对我们的操作系统没有影响,缺点是你的U盘刷入系统后容量只能是1440 MB,即当年流行的3.5英寸软盘的大小,当然不用担心,再格式化一次(用DiskGeniu),就可以恢复. 我做事情的话,总是怕自己的努力的结果白费了,害怕辛辛苦苦看完这本书但是发现做出来的东西现在根本没法用,