Android Intent 三解决

Intent的接收处理:

1、Receiver报名

这之前已经被引入

然后看看剩下的两个接收功能上面。 scheduleReceiver scheduleRegisteredReceiver;

scheduleReceiver会掉到activitythread.java中的scheduleReceiver函数, activitythread.java这个就是目标activity的主体,然后该函数就调用到该文件里的handlemessage函数,这个函数在收到RECEIVER消息后就调用handleReceiver来处理。这是一个重要的函数。以下分析一下这个函数的处理:

1。取得这个Intent指向的component,包含包名,类名;

2。取得包信息。这个结构提供了getClassLoader接口;

3,通过java.lang.ClassLoader cl = packageInfo.getClassLoader取得classLoader; 4。动态创建一个receiver。receiver = (BroadcastReceiver)cl.loadClass(component).newInstance(); 5,调用receiver.onReceive(context.getReceiverRestrictedContext(), data.intent),进入到真正的处理流程中去了; 6,调用finishReceiver来触发ActivityManagerService这个消息到其他receivers的发送或者下一个broadcast的发送;

这当中最重要的就是这个onReceive函数。我们通常都会实现这么一个函数。然后在里面处理我们收到的消息;

scheduleRegisteredReceiver的逻辑

这个函数事实上就是针对你使用动态注冊的方式而弄的。也就是你在代码的中调用register注冊的方式。

总结:

Intent 从使用的角度来说,就是构造Intent,提供适当的參数,比方Action,比方数据类型。数据的uri等,然后发送出去;接收方须要注冊一个 receiver,然后提供onReceive函数就能够了。这个注冊能够简单的写在AndroidManifest.xml里面也能够通过 registerReceiver来完毕; 发送的时候有三个API能够用: sendBroadcast sendStickyBroadcast sendOrderedBroadcast 第一个用于发送同步播放; 二是用来发送广播粘;
第三个用于发送串行广播;

版权声明:本文博客原创文章,博客,未经同意,不得转载。

时间: 2024-10-20 17:28:11

Android Intent 三解决的相关文章

Android intent 传值不更新的原因和解决办法

当 Activity 的启动模式是 singleTask 或者 singleInstance 的时候.如果使用了 intent 传值,则可能出现 intent 的值无法更新的问题.也就是说每次 intent 接收到的值都是第一次接到的值.因为 intent 没有被更新.想要更新需要做两件事情. 1. 发送方 Activity,加上一句话 ? 1 PendingIntent pendingIntent = PendingIntent.getActivity(context,0,intent,Pen

Android:调用其他程序中的activity和Permission Denial: starting Intent 错误解决办法

今天想调试多个task中栈的情况,在测试程序中调用另一个程序的activity, 代码片段如下: [java] view plaincopy btnStartX=(Button)findViewById(R.id.btnStartX); btnStartX.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stu

android学习三(Intent)

前面的博文介绍了Activity,可能学的还不太爽哦,所以接下来学习android的Intent,它是android的信使,可以进行各个组件之间进行通信了.我依然在前面的基础上进行修改开发,免的啰嗦过多的东西.没看过前面的博文的,可以先看android学习二(Activity),好了,接下来开始吧. 使用显示的Intent 1.在前面的ActivityTest基础上,我们在创建一个布局文件,文件名为second_layout.xml,代码如下: <?xml version="1.0&quo

[Android] Intent详解

[转]http://www.cnblogs.com/engine1984/p/4146621.html [正文] Intent组件虽然不是四大组件,但却是连接四大组件的桥梁,学习好这个知识,也非常的重要. 一.什么是Intent 1.Intent的概念: Android中提供了Intent机制来协助应用间的交互与通讯,或者采用更准确的说法是,Intent不仅可用于应用程序之间,也可用于应用程序内部的activity, service和broadcast receiver之间的交互.Intent这

Android Intent 教程

原文:Android: Intents Tutorial 作者:Darryl Bayliss 译者:kmyhy 人不会漫无目的地瞎逛,他们所做的大部分事情--比如看电视.购物.编写下一个杀手级 app -- 都带有特定的目的或者意图,即 intent. Android 也是同样的.在一个 app 干某件事情之前,它需要知道这件事情的目的或 intent,才能正确地完成整件事情. 这说明人和 Android 并无不同. 在本文,你将利用 Intent 去创建一个模因软件(一种用于恶搞的图片制作软件

Android开发之解决APP启动白屏或者黑屏闪现的问题

在做搜芽的过程中,发现那个外包人缘做的不行,因为启动的时候会停顿,然后白屏一会,联想到几个月前我在我的三僚企业通信软件里面拉起9K-Mail的时候也会黑屏,所以决定学习一下.解决一下.这不,万能的网络还是非常有用的. 在这里总结一下. (参考及转载:http://www.2cto.com/kf/201409/339293.html) 欢迎页启动的线程由于请求和处理的数据量过大而,导致欢迎页在出现之前界面上会有一个短暂的白色闪屏停留,当然白色闪屏的停留是因为 application 的主题样式an

[Android]Intent的使用

Intent 是 Android 程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据.Intent 一般可被用于启动活动.启动服务.以及发送广播等场景. Intent的使用包括两种方式: 显式Intent 隐式Intent 其中,隐式也包含多种方式. 一.显式Intent 在前一篇文章中,我们已经详细说明了怎么创建一个Activity,再 创建一个活动2,新建一个 second_layout.xml 布局文件,代码如下: <LinearLa

Android Intent基本使用

Android Intent基本使用 Intent组件虽然不是四大组件,但却是连接四大组件的桥梁,学习好这个知识,也非常的重要. 一.什么是Intent 1.Intent的概念: Android中提供了Intent机制来协助应用间的交互与通讯,或者采用更准确的说法是,Intent不仅可用于应用程序之间,也可用于应用程序内部的activity, service和broadcast receiver之间的交互.Intent这个英语单词的本意是"目的.意向.意图". Intent是一种运行时

android之android.intent.category.DEFAULT的用途和使用

转载(http://blog.csdn.net/jason0539/article/details/10049899) 1.要弄清楚这个问题,首先需要弄明白什么是implicit(隐藏) intent什么是explicit(明确) intent. Explicit Intent明确的指定了要启动的Acitivity ,比如以下Java代码: Intent intent= new Intent(this, B.class): Implicit Intent没有明确的指定要启动哪个Activity