- 浏览: 1027816 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (675)
- ios (214)
- android-course (5)
- unity3d (7)
- cocos2d (36)
- html5 (3)
- game (5)
- android (42)
- java (57)
- php (12)
- 创业 (10)
- SEO (3)
- 架构 (2)
- 数据库 (3)
- 产品设计 (9)
- 操作系统 (10)
- Web前端 (11)
- 其他 (50)
- GAE (1)
- mac os (8)
- Open Source (2)
- 序列号 (10)
- C (2)
- database (2)
- 算法 (6)
- 设计模式 (1)
- photoshop (1)
- 3dmax (1)
- maya (1)
- opengl (3)
- 游戏设计 (1)
- 趋势 (1)
- cocos2d-x (4)
- shell (3)
- c++ (30)
- lua (5)
- flash (1)
- spring (3)
- mysql (4)
- Git (6)
- xmpp (1)
- cocos2dx (14)
- mac (2)
- 编程规范 (2)
- windows (1)
- linux (5)
- coocs2dx (1)
- ubuntu (2)
- aws (1)
- OPENGLES (1)
- 原画 (1)
最新评论
-
jlees:
Best mobile app testing tool pc ...
iOS + XCode 4 + GHUnit = Mobile TDD+Continuous testing -
ipanda:
楼主,能否给一个Micro CloudFoundry的虚机或者 ...
Cloud Foundry使用及开发向导 -
love_zongming:
谢谢分享。。
visio2007序列号 -
雨花台舞水:
你这才是枪文把
套在 360 黑匣子外面的黑盒子:你被技术型枪稿吓到了么? -
hugh.wang:
改天试试
Mac版魔兽争霸3 1.24e下载
从现实生活中理解广播机制
一听到广播我们第一感觉就会联想到小时候村里面的广播,每逢村里有什么活动都是通过广播发送的。收听收音机也是一种广播,在收音机中有很多个广播电台,每个广播电台播放的内容都不相同。接受广播时广播(发送方)并不在意我们(接收方)接收到广播时如何处理。好比我们收听交通电台的广播,电台中告诉我们现在在交通状况如何,但它并不关心我们接收到广播时做如何做出处理,这不是广播应该关心的问题,OK,到这里我们从生活中的一些小例子浅浅的理解了一下广播,那么Android 中的广播是如何操作的呢?
Android 的广播机制
在 Android 里面有各种各样的广播,比如电池的使用状态,电话的接收和短信的接收都会产生一个广播,应用程序开发者也可以监听这些广播并做出程序逻辑的处理。下面我画一张粗略的图来帮助大家理解广播的运行机制。
Android 中有各式各样的广播,各种广播在Android 系统中运行,当系统/应用程序运行时便会向 Android 注册各种广播,Android 接收到广播会便会判断哪种广播需要哪种事件,然后向不同需要事件的应用程序注册事件,不同的广播可能处理不同的事件也可能处理相同的广播事件,这时就需要Android 系统为我们做筛选。
案例分析:
一个经典的电话黑名单,首先通过将黑名单号码保存在数据库里面,当来电时,我们接收到来电广播并将黑名单号码与数据库中的某个数据做匹配,如果匹配的话则做出相应的处理,比如挂掉电话、比如静音等等。。。
Demo 分析:
下面通过一个小DEMO 来讲解一下广播在Android 中如何编写,在Demo中我们设置了一个按钮为按钮设置点击监听通过点击发送广播,在后台中接收到广播并打印LOG信息。代码如下:
public static final String ACTION_INTENT_TEST = "com.terry.broadcast.test";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn = (Button) findViewById(R.id.Button01);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(ACTION_INTENT_TEST);
sendBroadcast(intent);
}
});
}
}
接收器代码如下:
public myBroadCast() {
Log.v("BROADCAST_TAG", "myBroadCast");
}
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Log.v("BROADCAST_TAG", "onReceive");
}
}
Android 广播的生命周期
在上面的接收器中,继承了BroadcastReceiver 并重写了它的onReceive 并构造了一个函数,下面通过图片来一步一步认识 Android 广播的生命周期。当我点击一下按钮,它向Android 发送了一个广播,如下图:
这时我们再点击一下按钮,它还是会再向 Android 系统发送广播,此时日志信息如下:
下面本人画一张图像,描述了Android 中广播的生命周期,其次它并不像Activity 一样复杂,运行原理很简单如下图:
下面来看一下SDK给出的解释:
大意为:如果一个广播处理完onReceive 那么系统将认定此对象将不再是一个活动的对象,也就会finished掉它。
至此,大家应该能明白 Android 的广播生命周期的原理,代码也不用多介绍,很简单的一个发送广播并处理广播的Demo。
Android 如何判断并筛选广播?
前面说过 Android 的广播有各式各样,那么Android 系统是如何帮我们处理我们需要哪种广播并为我们提供相应的广播服务呢?这里有一点需要大家注意,每实现一个广播接收类必须在我们应用程序中的 manifest 中显式的注明哪一个类需要广播,并为其设置过滤器,如下图:
Tip:action 代表一个要执行的动作,在Andriod 中有很action 比如 ACTION_VIEW,ACTION_EDIT
那么有些人会问了,如果我在一个广播接收器中要处理多个动作呢?那要如何去处理?
小结:
发表评论
-
Android监听键盘是否弹出,以及获取软键盘的高度
2015-07-02 19:31 1485网上介绍过监听键盘是否弹出的方法,我自己也是尝试过,不是 ... -
linux安装android NDK
2015-04-20 19:14 1901Error:Execution failed for ta ... -
android studio 添加项目修改gradle2.2.3
2015-04-20 15:22 16001.build.gradle(Module:app) 去除对 ... -
Android.mk无需手动添加cpp文件(cocos2d-x 3.2正式版)
2014-09-11 14:41 1024LOCAL_PATH := $(call my-dir) ... -
cocos2dx 在android中编译
2014-08-08 17:11 8491在全局环境变量中设置NDK_ROOT -
android实现通过浏览器点击链接打开本地应用(APP)并拿到浏览器传递的数据
2014-08-07 16:54 2560为了实现这个功能可折腾了我好久,先上一份代码,经楼主验证是绝 ... -
用Gradle 构建你的android程序
2014-03-21 17:15 833前言 android gradle 的插 ... -
Hackborn的吐槽和Munn的剖析: Android graphics低性能背后的真像
2013-10-23 14:52 792Google+上有意思的讨论 ... -
mac 不识别 android samsung手机
2013-10-21 16:30 1882使用Mac开发Android时,有可能无法识别手机,可以通过 ... -
Mac下配置Android NDK环境并搭建Cocos2d-x环境并Eclipse正常编译运行Cocos2dX自带TestsDemo项目!
2013-04-04 00:58 1218大家都知道Cocos2d-X是个多平台支持的游戏引擎,那么 ... -
让Java跟Javascript更加亲密
2013-04-02 22:30 1143在移动App开发中,为了快速迭代,通常都会使用Native+ ... -
技术文章收藏夹
2013-02-13 19:59 811COCOS2D-X跨ANDROID&IOS平台开发入 ... -
eclipse failed to create the java virtual machine 问题图文解析
2013-01-27 11:16 685解决方法: 1.问题现象 2.java虚拟机初始化失败 ... -
cocosd-android原来是个山寨货
2012-06-13 09:25 9741、技术团队无优势:Cocos2D-Android版本与iPh ... -
How Secure Are Query Strings Over HTTPS?
2012-03-09 12:29 1262A common question we hear is ... -
Android禁止横屏竖屏切换
2012-04-20 00:13 1697在AndroidManifest.xml的activity(需 ... -
Facebook还发布了Ringmark手机浏览器测试套件
2012-02-28 09:17 1093Facebook还发布了Ringmark手机浏览器测试套件 -
Handling Android 2.3 WebView's broken AddJavascriptInterface
2012-02-12 15:05 1459The Google Android team rele ... -
Error executing aapt解决
2012-02-11 23:31 4558安装完SDK和ADT时貌似出现些问题。 Description ... -
移动开发指南
2012-01-19 23:12 906............................. ...
相关推荐
Android事件分发机制完全解析,带你从源码的角度彻底理解
在Android开发中,ImageView是一个非常常见的控件,用于展示图像资源。`android:scaleType`是ImageView的一个关键属性,它决定了图片如何根据ImageView的尺寸进行缩放和定位。本篇文章将详细解析`android:scaleType`...
### 图解Android 4.0开发环境配置 #### 一、引言 随着移动互联网的飞速发展,Android操作系统已成为全球范围内最受欢迎的移动操作系统之一。为了满足开发者的需求,本指南将详细介绍如何配置一个完整的Android 4.0...
《图解Android手机发展史》 Android手机的发展历程是一部充满竞争与创新的壮丽史诗,从初出茅庐到席卷全球,它的成长速度令人惊叹。2007年,谷歌首次发布Android操作系统,当时正值苹果iPhone的热潮之中,人们对...
《图解Android手机发展史》一文详尽记录了Android操作系统自诞生以来的崛起之路,这一历程充满了挑战与变革。2007年,当谷歌宣布推出开源的Android操作系统时,许多人并不看好,毕竟那时苹果的iPhone已崭露头角。...
【Android 发展历程详解】 Android,这个如今全球范围内广受欢迎的操作系统,自2007年诞生以来,经历了从默默无闻到主导市场的快速崛起。2007年,谷歌首次发布Android,许多人对其并不看好,毕竟那时苹果的iPhone已...
### Android提高篇机制分析 #### 一、设计方法论探讨之设计意图 在探索Android复杂的内部运作时,首要任务是从宏观角度理解其设计理念与架构。本文档试图从设计师的角度出发,探讨Android系统的构建思路。 ##### ...
Android系统架构是一个复杂而精细的设计,它包含了操作系统、中间件和应用程序等多个层次,旨在为移动设备提供一个开放、可扩展的平台。以下是Android系统架构的关键组成部分及其详细解释: 1. **Linux内核**:...
### 图解Google Android内核编译教程 #### 一、Android内核编译的重要性与背景 Android是由Google公司推出的移动操作系统平台,它基于Linux内核,具有高度的可定制性和扩展性。Android的成功很大程度上得益于其...
Delphi XE5 图解为Android应用制作签名 Delphi XE5 是一个功能强大且流行的开发环境,用于构建跨平台应用程序。在 Android 平台上,Delphi XE5 提供了详细的签名机制,以确保应用程序的安全和可靠性。在本文中,...
【Android手机发展史概述】 2007年,谷歌推出了开源智能手机操作系统Android,当时许多人对此反应冷淡,因为苹果的iPhone已经引发了巨大的市场反响。然而,短短三年时间,Android迅速崛起,成为全球增长最快、最具...
### 图解Eclipse搭建Android平台 #### 一、前言 随着智能手机的普及与移动互联网的发展,Android系统作为全球最受欢迎的移动操作系统之一,受到了广泛的关注。对于开发者而言,掌握如何在开发环境中搭建Android...
### 图解Eclipse搭建Android平台 #### 一、前言 在移动开发领域,特别是早期Android应用开发过程中,Eclipse一直是主流的选择之一。本文将详细介绍如何通过Eclipse来搭建一个完整的Android开发环境,并在此基础上...
人体穴位图解是一款免费无广可提供人体穴位、经络病症及穴位图表查询的工具,基于Flutter开发,涵盖肺、肠、脾、胃等部位。所有资料源于公共医学文献,可快速查找穴位和按摩缓解方法,适合中医学习及症状查询研究。 ...
MyEclipse 8.集成Android开发环境详细图解 MyEclipse 8.集成Android开发环境详细图解 MyEclipse 8.集成Android开发环境详细图解 MyEclipse 8.集成Android开发环境详细图解