intent传递对象

Android中的广播Broadcast详解

老子叫甜甜 提交于 2019-12-04 01:36:30
今天来看一下Android中的广播机制,我们知道广播Broadcast是Android中的四大组件之一,可见他的重要性了,当然它的用途也很大的,比如一些系统的广播:电量低、开机、锁屏等一些操作都会发送一个广播,具体的Android系统中的广播可以参见我的另外一篇博客: http://blog.csdn.net/jiangwei0910410003/article/details/17218985 . 下面就来详细讲解一下广播机制: 广播被分为两种不同的类型:“ 普通广播 (Normal broadcasts)”和“ 有序广播 (Ordered broadcasts)”。 普通广播是完全异步的,可以在同一时刻(逻辑上)被所有广播接收者接收到,消息传递的效率比较高,但缺点是:接收者不能将处理结果传递给下一个接收者,并且无法终止广播Intent的传播 ; 然而有序广播是按照接收者声明的优先级别(声明在intent-filter元素的android:priority属性中,数越大优先级别越高,取值范围:-1000到1000。也可以调用IntentFilter对象的setPriority()进行设置),被接收者依次接收广播 。如:A的级别高于B,B的级别高于C,那么,广播先传给A,再传给B,最后传给C。A得到广播后,可以往广播里存入数据,当广播传给B时,B可以从广播中得到A存入的数据。

23 个重难点突破,带你吃透 Service 知识点「长达 1W+ 字」

有些话、适合烂在心里 提交于 2019-12-03 09:28:33
前言 学 Android 有一段时间了,想必不少人也和我一样,平时经常东学西凑,感觉知识点有些凌乱难成体系。所以趁着这几天忙里偷闲,把学的东西归纳下,捋捋思路。 这篇文章主要针对 Service 相关的知识点,进行详细的梳理,祝大家食用愉快! 文章目录 方便大家学习,我在 GitHub 建立了 仓库 仓库内容与博客同步更新。由于我在 稀土掘金 简书 CSDN 博客园 等站点,都有新内容发布。所以大家可以直接关注该仓库,以免错过精彩内容! 仓库地址: 超级干货!精心归纳 Android 、 JVM 、算法等,各位帅气的老铁支持一下!给个 Star ! # 第一篇:Service 是什么 1.1 什么是 Service Service (服务) 是一个一种可以在后台执行长时间运行操作而没有用户界面的应用组件。 服务可由其他应用组件启动(如 Activity ),服务一旦被启动将在后台一直运行,即使启动服务的组件( Activity )已销毁也不受影响。 此外,组件可以绑定到服务,以与之进行交互,甚至是执行进程间通信 ( IPC )。 1.2 Service 通常总是称之为 “后台服务” 其中 “后台” 一词是相对于前台而言的,具体是指:其本身的运行并不依赖于用户可视的 UI 界面 因此,从实际业务需求上来理解, Service 的适用场景应该具备以下条件: 并不依赖于用户可视的 UI

Android中Intent组件详解

倾然丶 夕夏残阳落幕 提交于 2019-12-03 04:16:00
Intent是不同组件之间相互通讯的纽带,封装了不同组件之间通讯的条件。 Intent 本身是定义为一个类别(Class),一个Intent对象表达一个目的(Goal)或期望(Expectation),叙述其所期望的服务或动作、与动 作有关的数据等。Android则根据此Intent对象之叙述,负责配对,找出相配的组件,然后将 Intent对象传递给所找到的组件,Android的媒婆任务就完成了。 在Google Doc中是这样描述Intent的 (摘自Android中文翻译组) 当接收到ContentResolver发出的请求后,内容提供者被激活。而其它三种组件──activity、服务和广播接收器被一种叫做intent的异步消息所激活。 intent 是一个保存着消息内容的Intent对 象。对于activity和服务来说,它指明了请求的操作名称以及作为操作对象的数据的URI和其它一些信息。比如说,它可以承载对一个activity 的请求,让它为用户显示一张图片,或者让用户编辑一些文本。而对于广播接收器而言,Intent对象指明了声明的行为。比如,它可以对所有感兴趣的对象声 明照相按钮被按下。 对于每种组件来说,激活的方法是不同的: 1.通过传递一个 Intent对象至 Context.startActivity()或Activity

Android:Intent的理解和使用

匿名 (未验证) 提交于 2019-12-03 00:22:01
一.Intent介绍: Intent的中文意思是“意图,意向”,在Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动 作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的 交互。因此,可以将Intent理解为不同组件之间通信的“媒介”专门提供组件互相调用的相关信息。 二.使用 activity的跳转 Intent intent = new Intent(); //setClass函数的第一个参数是一个Context对象 //Context是一个类,Activity是Context类的子类,也就是说,所有的Activity对象,都可以向上转型为Context对象 //setClass函数的第二个参数是一个Class对象,在当前场景下,应该传入需要被启动的Activity类的class对象 intent.setClass(MainActivity. this , SecondActivity. class ); startActivity(intent); 简单的写法 Intent intent = new Intent(MainActivity

Android回顾/Intent的使用

匿名 (未验证) 提交于 2019-12-03 00:22:01
Intent 是Android程序中各个组件之间进行交互的重要方式之一,它既可以在当前Activity中指定想要完成的动作,还可以在不同组件间进行数据传递。Intent可分为两种,显示Intent和隐式Intent。 1.显示Intent Intent有多个构造函数,其中一个Intent的构造方法Intent(Context pageContext,Class setContentView(R.layout.activity_first); button.setOnClickListener( new View.OnClickListener() { @Override public void onClick (View v) { Intent intent= new Intent(FirstActivity. this ,SecondActivity.class); startActivity(intent); } }); } } 首先构造了一个Intent(显示Intent),传入FirstActivity.this作为上下文,SecondActivity.class作为目标活动,这样我们就明确了我们的意图,即在FirstActivity这个活动中通过点击mybutton按钮打开SecondActivity这个活动。然后通过Activity类的startActivity(

BroadCastReceiver

╄→尐↘猪︶ㄣ 提交于 2019-12-02 22:00:57
BroadcastReceiver   在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。而BroadcastReceiver是对发送出来的 Broadcast进行过滤接受并响应的一类组件。 下面将详细的阐述如何发送Broadcast和使用BroadcastReceiver过滤接收的过程:   首先在需要发送信息的地方,把要发送的信息和用于过滤的信息(如Action、Category)装入一个Intent对象,然后通过调用 sendOrderBroadcast()或sendStickyBroadcast()方法,把 Intent对象以广播方式发送出去。   当Intent发送以后,所有已经注册的BroadcastReceiver会检查注册时的IntentFilter是否与发送的Intent相匹配,若匹配则就会调用BroadcastReceiver的onReceive()方法。所以当我们定义一个BroadcastReceiver的时候,都需要实现onReceive()方法。   注册BroadcastReceiver有两种方式:   静态注册:在AndroidManifest.xml中用标签生命注册,并在标签内用标签设置过滤器。   <receiver android:name="myRecevice"> //继承BroadcastReceiver

Activity启动过程

懵懂的女人 提交于 2019-12-01 18:42:32
#Activity启动过程 ###一些基本的概念 ActivityManagerServices,简称AMS,服务端对象,负责系统中所有Activity的生命周期 ActivityThread,App的真正入口。当开启App之后,会调用main()开始运行,开启消息循环队列,这就是传说中的UI线程或者叫主线程。与ActivityManagerServices配合,一起完成Activity的管理工作 ApplicationThread,用来实现ActivityManagerService与ActivityThread之间的交互。在ActivityManagerService需要管理相关Application中的Activity的生命周期时,通过ApplicationThread的代理对象与ActivityThread通讯。 ApplicationThreadProxy,是ApplicationThread在服务器端的代理,负责和客户端的ApplicationThread通讯。AMS就是通过该代理与ActivityThread进行通信的。 Instrumentation,每一个应用程序只有一个Instrumentation对象,每个Activity内都有一个对该对象的引用。Instrumentation可以理解为应用进程的管家

《Android深入透析》之广播(Broadcast)

為{幸葍}努か 提交于 2019-12-01 16:45:19
1. 概述 在android中,Broadcast作为四大组件之一,被广泛的应用在android程序之间的数据传递。举一个大家都比较熟悉的例子来说明。在车上的时候大家都有收听广播的习惯,广播电台通过发送不同频率的信号,然后大家通过将各自频率调成和电台相同的频率,就可以接受到广播内容了。在android中的广播其实是和这个是一样的效果的。 2. 广播机制 android 中广播机制体现在方方面面,各种广播在android系统中运行,当系统、应用程序运行时便会向android注册各种广播,例如当开机完成后,系统会发送一条广播,接受到这条广播就能及时的作出提示和保存数据的动作;当你安装卸载应用程序的时候系统都会发送广播,来监听这条广播,就可以作出相应的动作,同样的广播还有很多,比如电量多少,短信,来电等等。 3. 发送和接收广播 3.1 广播定义 关于广播的定义,分为两种,动态注册和静态注册。 动态注册的广播接收器永远要快于静态注册的广播接收器,不管静态注册的广播接收器的优先级是否高于动态注册的广播接收器的优先级。 动态注册的广播不是常驻型的,他是跟随着activity的生命周期的。一般在开发中都会在 onDestroy() 方法中移除广播。静态注册的广播是常驻型的广播,也就是说当应用程序关闭的时候,如果有信息广播来,程序也会被系统调用。在同一优先级下,谁启动的快,谁将先收到广播。 3

说说PendingIntent的内部机制

二次信任 提交于 2019-12-01 16:44:59
说说 PendingIntent 的内部机制 侯 亮 1 概述 在Android中,我们常常使用PendingIntent来表达一种“留待日后处理”的意思。从这个角度来说,PendingIntent可以被理解为一种特殊的异步处理机制。不过,单就命名而言,PendingIntent其实具有一定误导性,因为它既不继承于Intent,也不包含Intent,它的核心可以粗略地汇总成四个字——“异步激发”。 很明显,这种异步激发常常是要跨进程执行的。比如说A进程作为发起端,它可以从系统“获取”一个PendingIntent,然后A进程可以将PendingIntent对象通过binder机制“传递”给B进程,再由B进程在未来某个合适时机,“回调”PendingIntent对象的send()动作,完成激发。 在Android系统中,最适合做集中性管理的组件就是AMS(Activity Manager Service)啦,所以它义不容辞地承担起管理所有PendingIntent的职责。这样我们就可以画出如下示意图: 注意其中的第4步“递送相应的intent”。这一步递送的intent是从何而来的呢?简单地说,当发起端获取PendingIntent时,其实是需要同时提供若干intent的。这些intent和PendingIntent只是配套的关系,而不是聚合的关系,它们会被缓存在AMS中。日后

BroadcastReceiver—简介

旧时模样 提交于 2019-12-01 14:00:46
Android BroadcastReceiver 简介 在 Android 中使用 Activity, Service, Broadcast, BroadcastReceiver 活动(Activity) - 用于表现功能 服务(Service) - 相当于后台运行的 Activity 广播(Broadcast) - 用于发送广播 广播接收器(BroadcastReceiver) - 用于接收广播 Intent - 用于连接以上各个组件,并在其间传递消息 BroadcastReceiver 在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。而BroadcastReceiver是对发送出来的 Broadcast进行过滤接受并响应的一类组件。下面将详细的阐述 如何发送Broadcast和使用BroadcastReceiver过 滤接收的过程: 首先在需要发送信息的地方,把要发送的信息和用于过滤的信息(如Action、Category)装入一个Intent对象,然后通过调用 Context.sendBroadcast()、sendOrderBroadcast()或sendStickyBroadcast()方法,把 Intent对象以广播方式发送出去。 当Intent发送以后