向下一个活动传递数据 Intent不仅可以用来启动活动,还可以在启动活动的时候传递数据。...思路很简单,Intent提供了一系列putExtra()方法的重载, 可以把我们想要传递的数据暂存在Intent中,启动了另一个活动后, 再把这些数据从Intent中取出就可以了。..., 接收两个参数, 第一个参数是键,用于后面从Intent中取值, 第二个参数是要传递的数据。..., 没有指定任何“意图”,把要传递的数据存放在Intent中,调用setResult()方法, 专门用于向上一个活动返回数据的,接收两个参数, 第一个参数用于上一个活动返回处理结果,一般使用RESULT_OK...和RESULT_CANCELED, 第二个参数把带有数据的Intent传递回去。
Intent传递数据时,如果数据太大,可能会出现异常。比如App闪退,或是Intent发送不成功,logcat报错等等。 这就牵涉到一个问题:Intent 传递数据大小限制。...本文标题也可以改为“Binder传递数据大小限制”。 数据以Parcel对象的形式存放在Binder传递缓存中。...如果数据或返回值比传递buffer大,则此次传递调用失败并抛出TransactionTooLargeException异常。 Binder传递缓存有一个限定大小,通常是1Mb。...多个地方在进行传输时,即时它们各自传输的数据不超出大小限制,TransactionTooLargeException异常也可能会被抛出。 在使用Intent传递数据时,1Mb并不是安全上限。...为什么Binder要限制传输数据的大小 个人推测,作为一种IPC的方式,Binder并不是为传输大量数据而设计。 传输大量数据,可以考虑URL之类的方法。
点击上面蓝色字体关注“IT大飞说” 置顶公众号(**ID:ITBigFly**)第一时间收到推送 作为一个 Android 开发人员,我们都是用过 Intent,用它来在组件之间传递数据...,所以说 Intent 是组件之间通信的使者,一般情况下,我们传递的都是一些比较简单的数据,并且都是基本的数据类型,写法也比较简单,今天我在这里说的是如何使用 Intent 传递对象及集合,我们知道Intent...Parcelable 接口的对象,这种方式比实现 Serializable 接口的方式稍微麻烦一点,需要重写方法,不过我们程序员都是比较懒的,给大家推荐一个插件: android-parcelable-intellij-plugin...集合数据 如果我们要传递的 List 集合,我们可以把 List 强转成 Serializable 类型,List 默认是实现了 Serializable 接口的,但是注意 List 的泛型类也必须要实现了...另外,默认 Intent 帮我们实现了,可以支持传递 String 数组等,也比较简单,这里就不赘述了,另外如果数据量比较大的情况下,建议使用第三方框架来进行传递数据,例如:EventBus 等来代替,
Intent数据传递 List 传递List传递List的方法 ArrayList info = new ArrayList(); info.add(name);...传递Object Serializable方式 传递Object需要先序列化,序列化有两种方式:Serializable和Parcelable。...该方法将类的数据写入外部提供的Parcel中。 声明:writeToParcel(Parcel dest, int flags)。 2)describeContents方法。...2.startActivityForResult(intent, -1)函数,第二个参数小于0,应该要大于0 3.启动模式为Android:launchMode=”singleTask”和android...复写onBackPressed()方法的时候,把自己写的代码放在super.onBackPressed()上面,这是因为onBackPressed()后activity直接finish了,需要在之前保存传递的数据
问题: 从页面A传递一个Bean对象给页面B,Bean对象里有一个List集合 Bean: public class Bean implements Serializable { private...java.lang.RuntimeException: Parcelable encountered IOException writing serializable object 查了很久发现原因,传递的这个...List是在数据源中使用subList(0,5)处理过的,而处理时是好的。
我们来看看如何在Activity对象中进行值的传递,也是通过 Intent 对象的各种putExtra方法来进行传递: MainActivity: Intent intent=new Intent(this...还是可以用Intent传值,不过要对传递的对象作一些特殊处理,可以参考这篇博客: intent可以传递的数据类型 三、先把数据存在本地,然后在下一个Activity中从本地取。...这种方式涉及到数据存储,Android数据的四种持久化存储方式SharedPreferences、SQLite、Content Provider和File,该方式的缺点就是要占用本地的资源,优点是数据可以在多个...这里推荐一篇博客,可以大概了解下Android的几种数据存储方式 四、使用EventBus框架 越来越多的项目开发中使用到EventBus这个框架,那什么是EventBus呢?...开发中我们都知道,很多时候要在Activty与Activty间,Activty与Fragment等之间传递数据进行交互,操作起来很不方便,我们以前可能会用到接口回调,或是用观察者模式来实现,或是发广播等等
一、View的dispatchTouchEvent和onTouchEvent 探讨Android事件传递机制前,明确android的两大基础控件类型:View和ViewGroup。...是所有事件的开始 (2)MotionEvent.ACTION_MOVE 滑动事件 (3)MotionEvent.ACTION_UP 与down对应,表示抬起 另外,明确事件传递机制的最终目的都是为了触发执行...对于View来说,事件传递机制有两个函数:dispatchTouchEvent负责分发事件,在dispatch***里又会调用onTouchEvent表示执行事件,或者说消费事件,结合源码分析其流程。...事件传递的入口是View的dispatchTouchEvent()函数: /** * Pass the touch screen...="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android
参考地址 http://blog.csdn.net/lmj623565791/article/details/47911083 client 基础配置
1、向目标Activity【Main2Activity】传递数据: Intent intent=new Intent(this,Main2Activity.class); //可传递多种类型的数据...//回传数据用得Intent可以新建,也可以用getIntent() Intent intent=new Intent(); //设置要回传的数据 intent.putExtra("name","张三...setResult(1,intent); 回传时会把请求码、结果码、Intent数据封装为一个整体回传,请求码+结果码唯一标识回传的Intent 3、在上一级Activity中取出回传的数据 上一级...这个判断主要是可能有多个目标Activity向当前Activity回传数据,这些Intent数据中可能具有相同的key...数据回传很常用,比如发微信朋友圈时,进入相册选择好图片后,会回传选择的图片的信息。
前言:智能手机早已成为我们今天身边必不可少的手持设备,iOS和Android也是目前主流的二大移动操作系统,当然也有越来越多的开发者加入到移动开发的工作中来。...我也是一名普通的Android码农,目前也在学习iOS开发中,有一些成长道路上的一些经验和教训,很早就想动手记录下来,再三下决心,终鼓起勇气,敲起键盘,有了下文,初次行文,文笔未免羞涩,大神轻点喷~ ...在Android中,系统将触摸事件包装成MotionEvent对象,同时MotionEvent类内部定义了ACTION_DOWN, ACTION_UP, ACTION_MOVE,ACTION_CANCEL...2.先说View,View触摸事件的开始还是dispatchTouchEvent(), 然后View会先将ev传递给TouchListener消费,如果TouchListener没有消费,就将ev传递给...这也验证了我们关于View触摸事件传递的第二部分,触摸事件ev优先被onTouchListener消费,然后再让传递给onTouchEvent消费。
Touch事件传递拥有记忆功能,处理了一次事件传递,假定底层布局都没发完成事件,最后是由顶层父布局自己处理的。那么,相同事件再次产生的时候,顶层布局就不会向下分配,而是自己直接处理事件。...总结: 可以看出这个公司的小例子正好对应了Touch事件传递机制。一层一层往下传递,当下面无法完成时,又网上回传。...而手指抬起时再次发生了Touch事件,任然传递至TextView被解决。 ?...同样点击蓝色区域,那么传递的方式应该是先一级一级的分发给下属处理,到了TextView(实习生)后,没有下属了,他又处理不了,就往上回传递,知道传递到FrameLayout(开发组长)后,他将任务处理了...这里体现出了Touch时间传递机制的记忆性。 ? 此图是点击蓝色区域后log打印出的信息,值得注意的是,当FrameLayout按照传递的记忆性直接执行完成任务时,是不会触发拦截方法的。 ?
上一篇中,我说明了Android中Activity和View触摸事件的传递流程,现在我们来继续学习MotionEvent在View的容器ViewGroup中的传递过程。 ...ev向下传递给它的子View,换一句话说,这个时候,ViewGroup就变成了我们上一篇说的View,完全走View的触摸事件传递流程,同样的我们来写代码验证。 ...我们的按钮的触摸事件和它的父容器的触摸事件,都触发了,这是因为,我们EventBtn的onTouchListener方法和onTouchEvent方法都返回false,没有消费触摸事件,事件会向上继续传递...那么如果ViewGroup不拦截触摸事件,事件在它的子Views中又是如何传递的呢? ...关于Android中ViewGroup的触摸事件传递就介绍到这里,难免很多地方有错误纰漏,但是我能够坚持把这些写出来,我觉得我已经有一点小小的提高了,很开心~~
ViewGroup类中的源码实现就是{return false;}表示不拦截该事件, 事件将向下传递(传递给其子View); 若手动重写该方法,使其返回true则表示拦截,事件将终止向下传递,...返回true则表示该View能处理该事件,事件将终止向上传递(传递给其父View); 返回false表示不能处理,则把事件传递给其父View的onTouchEvent()方法来处理 先上一段代码演示...> android="http://schemas.android.com/apk/res/android" android:layout_width="...3.演示图片中第二份为什么会少了一个onInterceptTouchEvent调用 dispatchTouchEvent()方法中还有“记忆”的功能,如果第一次事件向下传递到某View,它把事件继续传递交给它的子...在下一次发生ACTION_DOWN事件的时候,还是会传递到该View的。
教程 (一)—— 简单的示例 Android AIDL 传递对象(Parceable) 在上一篇文章中 Android AIDL 教程 (一)—— 简单的示例,我们介绍了怎样使用 AIDL 进行进程间的通讯...,并简单写了一个 Demo,今天,让我们一起来学习怎样在 AIDL 中传递对象。...Java 编程语言中的所有原语类型(如 int、long、char、boolean 等等) String CharSequence List List 中的所有元素都必须是以上列表中支持的数据类型、...Map Map 中的所有元素都必须是以上列表中支持的数据类型、其他 AIDL 生成的接口或您声明的可打包类型。...这样才能在服务端和客户端之间传递 package xj.musicserver; // Declare any non-default types here with import statements
启动一个Activity: 在用startActivityForResult()来启动一个Activity时,Intent的写法与startActivity()是一样的,没有任何区别,只是你需要传递一个额外的...Integer的变量作为启动参数,当启动的那个Activity退出时这个参数会被作为回调函数的一个参数,用来区分返回结果,也就是说你启动Activity时传递的参数(requestCode)和返回结果时的那个参数...* * @throws android.content.ActivityNotFoundException * * @see #startActivity...比如:联系人应用是返回的联系人URI,相机返回的是Bitmap数据。...content://result_uri"); setResult(Activity.RESULT_OK, result); finish(); 以上就是使用Intent在不同Activity进行信息传递和沟通的讲解
前言:基于android webview 上定制自己使用的可移植浏览器apk,遇到好多按键处理的问题。所以索性研究了一下keyevent 事件的传递流程。...frameworks 层 keyevent 事件开始是从/frameworks/base/core/java/android/webkit 目录下WebViewClassic.java 中onKeyDown...() 函数中又调用 sendBatchableInputMessage()函数在这个函数中的又调用 mWebViewCore.sendMessage(message) 将event封装成Message传递给...KeyEvent) msg.obj, msg.arg1, true); break; webkit层 key中调用nativeKey() 将事件传入webkit中Source/WebKit/android
记得刚开始学习Android的时候,对于onTouch相关的事件一头雾水。...分不清onTouch(),onTouchEvent()和OnClick()之间的关系和先后顺序,觉得有必要搞清onTouch事件传递的原理。...经过一段时间的琢磨以及网上相关博客的介绍,总算是了解了触摸事件传递的机制了,顺便写一篇博客来记录一下。下面就让我们来看看吧。 大家都知道一般我们使用的UI控件都是继承自共同的父类——View。...到了这里onTouch事件的传递机制基本已经分析完成了,也算是告一段落了。...下面是我画的一张草图: 触摸事件传递机制原理图 还有一点值得注意的地方是:假如当前事件是ACTION_DOWN,只有dispatchTouchEvent返回true了之后该View才会接收到接下来的ACTION_MOVE
上图是Android中线程间消息通信的过程,线程B向线程A发送消息,线程A有两种状态:激活状态和休眠状态。 1....当线程B向线程A的消息队列中写入一条数据的时候,同时线程B也会向eventfd写入数据,从而唤醒线程A从消息队列中读取Message并开始处理。
Activity传递、这种方法是在Activity里面添加一个字段、来临时保存要一些值。...然后翻了一下Fragment的API、找到了另外一个方法来传递、就像Activity一样便捷的实现参数传递程序中的一段代码、是通过Bundle来传递的、相比之下第一种方法要简单一点 FRAGMENT参数传递方法一...在Activity中定义一个字段、然后添加set和get方法、代码如下、mTitle就是要传递的参数、如果是传递对象、可以把mTitle换成一个对象即可 public class DemoActivity...可以使用bundle进行参数传递、这样在两个Fragment跳转的时候就可以带上参数了、同样也可以传递一个复杂的对象 ft.hide(getActivity...总结 从上面两种方法看来、方法一要简单一些、但个人觉得有点投机取巧、不过也很合Java的开发规范、如果是同一个Activity中要加载很多Fragment的话、这种方法无疑要简单很多 而方法二是使用了Android
开启Android开发之旅 要想开发一个Android App,开发环境是必不可少的,所以学习之前应该先搭建环境,环境如下: JDK + Android SDK(配置环境变量) 开发环境:Android...Activity间传递数据 Activity之间传递数据有两种方法: startActivity(intent):打开另一个Activity,同时向开启的界面Activity传递数据。...startActivityForResult(intent):打开另一个Activit,同时向开启的Activity传递数据,并回传数据。...WebView:加载网页 ListView:显示列表 GridView:显示表格式列表 ScrollView:内容可滚动视图 SufaceView:非常重要的绘图容器 针对比较常用的控件一和Activity之间传递数据写了一个小的...finish(); } }, 1000); } } 这里界面的自动跳转用到了Handler的postDelayed方法,Activity间传递数据用到了
领取专属 10元无门槛券
手把手带您无忧上云