android广播

android BroadcastReceiver广播

為{幸葍}努か 提交于 2020-04-11 12:11:36
Broadcast是一种广泛运用的在应用程序之间传输信息的机制。 一、下面是几个常用的系统广播 //重启设备时的广播 Intent.ACTION_REBOOT; //屏幕被关闭之后的广播 Intent.ACTION_SCREEN_OFF; //屏幕被打开之后的广播 Intent.ACTION_SCREEN_ON; //在系统启动完成后,这个动作被广播一次(只有一次)。 Intent.ACTION_BOOT_COMPLETED; //识别用户进入home界面 Intent.ACTION_USER_PRESENT; 二、BroadcastReceiver总体上可以分为两种注册类型:静态注册和动态注册: 1、AndroidManifest.xml文件中 静态 注册: <receiver android:name="******.MyBroadcastReceiver" android:exported=["true" | "false"] > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> android:exported: 此broadcastReceiver能否接收其他App的发出的广播

Andriod学习 第十二周

 ̄綄美尐妖づ 提交于 2020-04-05 20:53:45
一、Service 首先我们来了解一下线程的相关概念: 线程 1 相关概念 程序:为了完成特定任务,用某种语言编写的一组指令集合(一组静态代码) 进程:运行中的程序,系统调度与资源分配的一个独立单位,操作系统会 为每个进程分配一段内存空间。程序的依次动态执行,经历代码的加载,执行, 执行完毕的完整过程。 线程:比进程更小的执行单元,每个进程可能有多条线程,线程需要放在一个 进程中才能执行,线程由程序负责管理,而进程则由系统进行调度。 多线程的理解:并行执行多个条指令,将CPU时间片按照调度算法分配给各个 线程,实际上是分时执行的,只是这个切换的时间很短,用户感觉到"同时"而已。 2 线程的生命周期 3 创建线程的三种方式 继承Thread类 实现Runnable接口 实现Callable接口 如果使用的是2创建的线程的话,可以直接这样启动: new Thread(myThread).start(); 当更多的时候我们喜欢使用匿名类,即下面这种写法: new Thread(new Runnable(){ public void run(); }).start(); Service与Thread 两者并没有太大的关系,但容易混淆。 Thread是线程,程序执行的最小单元,分配CPU的基本单位, 而Service则是Android提供一个允许长时间留驻后台的一个组件,最常见的

Android应用程序组件介绍

廉价感情. 提交于 2020-03-19 19:01:02
应用程序组件是 Android 应用程序的基本构建单元。每个组件是系统进入你的应用程序的不同入口点。不是所有的组件对于用户都是实际上的入口点,有些是互相依赖的,但是每个组件都有特定的作用——每个都是唯一的构建单元,这些构建单元定义你应用程序的全部行为 有四种不同类型的应用程序组件。每种都有不同的用处并且有不同的生命周期。生命周期定义了他们是怎样被创建和销毁的。 四类不同的应用程序组件分别有: Activities 一个 Activity 代表一个单独的拥有用户界面的屏幕。比如,一个邮件应用程序可能拥有一个显示新邮件的列表的 Activity ,一个编写邮件的 Activity ,一个读邮件的 Activity 。虽然这些 Activity 一起工作,但是他们是相互独立的。因此一个不同的应用程序也可以启动这些 Activity 中的任何一个(如果邮件应用程序允许的话)。比如一个摄像头应用程序为了能让用户分享一张图片它能启动邮件应用程序中的编写邮件的 Activity 。 一个 Activity 是由 Activity 类的子类来实现的。 Services 一个 Service 组件是运行在后台的一个进程,这个进程处理一个长时间的操作或者是一个远程调用。一个 Service 不需要提供一个用户界面。比如,一个 Service 可以在用户运行一个不同程序的同时在后台播放音乐

Android四大组件之广播

烂漫一生 提交于 2020-03-15 20:54:59
广播接收者(Broadcast Receiver)有两种:普通广播(Normal Broadcast)和有序广播(Ordered Broadcast) 1,普通广播 Context.sendBroadcast( new Intent() ); 完全异步,可以在同一时刻被所有接收者接收到,消息传播的效率比较高; 缺点是接收者不能将处理结果传递给下一个接收者,并且无法终止广播Intent的传播; 2,有序广播 Context.sendOrderedBroadcast( new Intent() ); 按照接收者的优先级别(声明在intent-filter元素的android:priority属性中,数越大优先级越高,取值范围-100~100;也可以调用IntentFilter对象的setPriority()进行设置),被接受者依次接收广播。 前面的接收者有权终止广播(BroadcastReceiver.abortBroadcast()),如果广播被前面的接收者终止,后面的接收者就无法获取到广播; 前面的接收者可以将处理结果通过setResultExtras(Bundle)方法存放进结果对象,然后传给下一个接收者,通过Bundle bundle =getResultExtras(true))可以获取上一个接收者存入在结果对象中的数据。 生命周期: 一个广播处理完onReceive(

从0系统学Android--5.1 广播机制

你。 提交于 2020-03-09 19:43:04
从0系统学Android--5.1 广播机制 本系列文章目录 : 更多精品文章分类 本系列持续更新中.... 初级阶段内容参考《第一行代码》 第五章:全局大喇叭---详解广播机制 5.1 广播机制简介 Android 中每个应用程序都可以对自己感兴趣的广播进行注册,这样当注册的广播发出时,应用程序就会接受到。这些广播可能来自系统,也可能来自其他应用程序。 接受广播需要用到 Broadcast Receiver 广播接收器。 Android 中的广播分为两种: 标准广播和有序广播 。 标准广播:是一种完全 异步执行的广播 ,在广播发出后几乎所有的接收器都会在同一时刻受到广播消息。因此它们之间没有任何的先后顺序,这种广播效率比较高,但同时意味着不能被截断。 有序广播:是一种 同步执行的广播 ,在广播发出后,同一时刻只有一个广播接收器能够收到这条广播消息,当这个广播接收器中的逻辑执行完毕后广播才会继续传播。有序广播是有先后顺序的,优先级高的会优先接受到广播并且可以截断正在传递的广播。 5.2 接受系统广播 Android 系统内置了许多的系统级别的广播,我们可以通过这些广播来获取手机的一些状态。比如手机开机会发送一条广播,电池电量发生变化会发送广播,时间或者时区发生改变会发送广播等等。 5.2.1 动态注册监听网络变化 注册广播的方式有两种:一种是在代码中注册称为 动态注册 ,另一种是在

android 广播 调用三方应用

℡╲_俬逩灬. 提交于 2020-03-05 10:13:50
被调用方: 1、写静态接收广播: public class MyBroadcastReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent receiverIntent) { //可以接收 上个 调用传来的数据 String userId = receiverIntent.getStringExtra("username"); //创建一个新的 Intent intent = new Intent(context, TRTCVideoRoomActivity.class); //插入要传递的数据 intent.putExtra(TRTCVideoRoomActivity.KEY_USER_ID, userId); //这里必须使用 FLAG_ACTIVITY_NEW_TASK 否则会报错 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); } 2、添加权限 注册广播 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> <receiver android

android中跨进程通讯的4种方式

放肆的年华 提交于 2020-02-04 09:51:29
转自: http://www. android sdn.com/article/show/137 由于android系统中应用程序之间不能共享内存。因此,在不同应用程序之间交互数据(跨进程通讯)就稍微麻烦一些。在android SDK中提供了4种用于跨进程通讯的方式。这4种方式正好对应于android系统中4种应用程序组件:Activity、Content Provider、Broadcast和Service。   其中 Activity 可以跨进程调用其他应用程序的Activity;    Content Provider 可以跨进程访问其他应用程序中的数据(以Cursor对象形式返回),当然,也可以对其他应用程序的数据进行增、删、改操 作;    Broadcast 可以向android系统中所有应用程序发送广播,而需要跨进程通讯的应用程序可以监听这些广播;    Service 和Content Provider类似,也可以访问其他应用程序中的数据,但不同的是,Content Provider返回的是Cursor对象,而Service返回的是Java对象,这种可以跨进程通讯的服务叫AIDL服务。 完整示例请参阅本文提供的源代码。 方式一:访问其他应用程序的Activity Activity既可以在进程内(同一个应用程序)访问,也可以跨进程访问

Android学习笔记(广播机制)

Deadly 提交于 2020-01-30 05:54:20
1.Android的广播机制介绍 收听收音机也是一种广播,在收音机中有很多个广播电台,每个广播电台播放的内容都不相同。接受广播时广播(发送方)并不在意我们(接收方)接收到广播时如何处理。好比我们收听交通电台的广播,电台中告诉我们现在在交通状况如何,但它并不关心我们接收到广播时做如何做出处理,这不是广播应该关心的问题,OK,到这里我们从生活中的一些小例子浅浅的理解了一下广播,那么Android 中的广播是如何操作的呢? 在 Android 里面有各种各样的广播,比如电池的使用状态,电话的接收和短信的接收都会产生一个广播,应用程序开发者也可以监听这些广播并做出程序逻辑的处理。 一个经典的电话黑名单,首先通过将黑名单号码保存在数据库里面,当来电时,我们接收到来电广播并将黑名单号码与数据库中的某个数据做匹配,如果匹配的话则做出相应的处理,比如挂掉电话、比如静音等等 2.BroadcaseReceiver的作用 1.同一app内部的同一组件内的消息通信(单个或多个线程之间); 2.同一app内部的不同组件之间的消息通信(单个进程); 3.同一app具有多个进程的不同组件之间的消息通信; 4.不同app之间的组件之间消息通信; 5.Android系统在特定情况下与App之间的消息通信。 3.BroadcaseRecevier的实现方法 1.创建一个类,继承BroadcastRecevier

Android 系统广播大全

馋奶兔 提交于 2020-01-28 07:39:11
这篇文章主要给大家介绍Android 广播大全 Intent Action 事件详解,涉及到android广播action 方面知识点,本文讲解的非常的全面,感兴趣的朋友一起看看吧 Intent.ACTION_AIRPLANE_MODE_CHANGED; //关闭或打开飞行模式时的广播 Intent.ACTION_BATTERY_CHANGED; //充电状态,或者电池的电量发生变化 //电池的充电状态、电荷级别改变,不能通过组建声明接收这个广播,只有通过Context.registerReceiver()注册 Intent.ACTION_BATTERY_LOW; //表示电池电量低 Intent.ACTION_BATTERY_OKAY; //表示电池电量充足,即从电池电量低变化到饱满时会发出广播 Intent.ACTION_BOOT_COMPLETED; //在系统启动完成后,这个动作被广播一次(只有一次)。 Intent.ACTION_CAMERA_BUTTON; //按下照相时的拍照按键(硬件按键)时发出的广播 Intent.ACTION_CLOSE_SYSTEM_DIALOGS; //当屏幕超时进行锁屏时,当用户按下电源按钮,长按或短按(不管有没跳出话框),进行锁屏时,android系统都会广播此Action消息 Intent.ACTION_CONFIGURATION

Android Broadcast

爷,独闯天下 提交于 2020-01-24 05:22:23
广播接收者(BroadcastReceiver)用于接收广播,广播Intent的发送是通过调用Context.SendBroadcast()、Context.sendOrdredBroadcast()来实现的,通常一个广播Intent可以被订阅了此Intent的广播接收者接收,这个特性跟JMS中的Topic消息接收者类似,要实现一个广播接收者方法: 1、继承BroadcastReceiver,重写onReceive()方法; 2、订阅感兴趣的广播Intent,订阅方式有两种: >>1.代码方式注册, 在onStart()中调用registerReceiver()进行注册和在onStop中调用unregisterReceiver()释放服务 : IntentFilter filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED"); IncomingSMSReceiver receiver = new IncomingSMSReceiver(); registerReceiver(receiver,filter); unregisterReceiver(receiver) >>2.XML方式注册,在Manifest.xml中application节点里进行订阅 <receiver android:name=