关于android Intent意图的一点心得
Intent 意图,android里通过它实现activity的指定跳转,一般可以通过它来传递某些参数给跳转到activity。
但是这中间也会出现一些问题,我以前没有注意到,最近在做项目的过程中才发现到这几点:
首先,intent 跳转所能携带的参数类型并不是没有限制的,无法让其传递一个object类型的对象。
那么我们希望通过其来传递一些类似自定义Vo对象时该怎么做呢?其实也很简单,Intent在传递对象时其实也是通过io流的方式进行的,而在处理对象流时需要对对象进行序列化,Intent也一样,想要通过其传递某些特定对象时我们只需要将该对象进行序列化,并在传过去之后对其反序列化即可。听着麻烦,结合SDK来看,其实通过有两种简单的方式就能够完成想过功能。
第一种,实现Serializable接口,这种方式在java jsk里就有,实现该接口就能够自动地对该类对象在传输时进行序列化和反序列化。
第二种,实现Parcelable接口,这个方式是androidapi1开始就提供的,效率上来说比Serializable要高一些,但是实现起来要稍微麻烦点,需要覆写一些方法:
1 public class MyParcelable implements Parcelable { private int mData; public int describeContents() { return 0; } public void writeToParcel(Parcel out, int flags) { out.writeInt(mData); } public static final Parcelable.Creator<MyParcelable> CREATOR = new Parcelable.Creator<MyParcelable>() { public MyParcelable createFromParcel(Parcel in) { return new MyParcelable(in); } public MyParcelable[] newArray(int size) { return new MyParcelable[size]; } }; private MyParcelable(Parcel in) { mData = in.readInt(); } }
两种方式皆可实现目的,效率上后者更高一点,自己选择吧。
其次,是关于不同启动模式下,intent获取的问题。之前我一种直接通过getIntent()方法来获取执行跳转动作的activity传递过来的意图,但是后来由于项目内很多activity都采用了singletask的启动模式,而这种模式下某一activity永远只存在一个实例,这就会出现不同页面多次跳转到这个activity的情况,在这种模式下,我发现通过getIntent()方式获取到的永远是第一次跳转到该activity时候传过来的Intent。那到底该如何来获取后面几次穿过来的Intent呢?其实也很简单,只需要覆写activity内的OnNewIntent(Intent intent)方法就可以了,形参里的intent就是某次跳转过来时新Intent。
转载于:https://www.cnblogs.com/hisneric/archive/2012/02/18/android_intent.html
关于android Intent意图的一点心得相关推荐
- Android(Intent意图初解,显示意图,隐式意图,意图过滤器)
Android Intent 简介:Intent被称为意图,是安卓程序中的一种比较重要的组件间交户的方式,可以用于组件间的跳转,传递数据等.通常用作启动Activity,Service以及发送广播等. ...
- android 之intent(意图)详解
如果一个Activity想启动另外一个Activity,则必须使用意图对象:intent. 意图(intent):想干嘛 意图的功能: A.激活组件 B.携带数据 意图的分类: A.显式意图:指定了要 ...
- Android Intent基本使用
Android Intent基本使用 Intent组件虽然不是四大组件,但却是连接四大组件的桥梁,学习好这个知识,也非常的重要. 一.什么是Intent 1.Intent的概念: Android中提供 ...
- 对于android.intent.action.MAIN和android.intent.category.LAUNCHER的理解
当我们使用Android Studio创建一个工程并生成一个Activity时,经常可以在清单文件中看到如下的代码: <activity android:name=".MainActi ...
- Android -- Intent
Intent Android ...
- Android Intent And Intent Filter
2019独角兽企业重金招聘Python工程师标准>>> 1.概述 一个应用程序的三个核心组件--activities.services.broadcast receivers,都是通 ...
- 5、android使用意图传递数据之全局变量传递
实例: 1.layout的代码 activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/ap ...
- Android Intent 用法总结
From:https://www.jianshu.com/p/67d99a82509b Android 中提供了 Intent 机制来协助应用间的交互与通讯,Intent 负责对应用中一次操作的动作. ...
- android Intent和IntentFilter
android的应用程序包含三种重要的组件:Activity.Service.BroadcastReceiver,应用程序采用一致的方式来启动他们--都是依靠Intent来进行启动.Intent就封装 ...
最新文章
- 不会做内部分享的程序员不是好程序员
- 计算机常用英语术语、词汇表(上)
- 【PAT乙级】1089 狼人杀-简单版 (20 分)
- param注解报错_mybatis不加@Parm注解报错的解决方案
- 币氪研报|BNB(Binance Coin)
- java BitSet2
- OSG 实现跟随节点的相机(转)
- 案例研究 路由器到路由器EOMPLS---基于端口
- Lecture Notes: Macros
- excel的IRR函数中的预估值有什么用
- 安卓客户端代码中修改服务器ip,安卓客户端代码中修改服务器ip
- oracle驱动包下载
- 小Z的袜子【莫队算法】
- Mybatis【面试题】
- 深圳租房信息聚类与回归分析
- chrome浏览器中用 F12 进行抓包
- # 小文件大问题——海量小文件解决方案初探
- GMT格式的时间处理 Thu Jan 01 00:00:00 +0000 2009成时间戳
- 循环结构简单题之分硬币
- 上、下、左、右键的ASCII值
热门文章
- 旷视开源了一套图像检索和ReID的PyTorch库
- linux逻辑分区被删除了怎么办,找到了linux分区顺序错乱修复方法
- linux密码过期不修改,Linux解决用户密码过期但不用修改密码的方法
- python的matplotlib库polar_【Python】matplotlib库
- Java中注解学习系列教程-1
- 6个部件组成一个圆球_2016年新课标人教版小学六年级数学上册单元练习题集
- 【TensorFlow】TensorFlow从浅入深系列之七 -- 教你使用验证数据集判断模型效果
- 小白来学C语言之宏定义(#define)
- 词嵌入:探索解释和利用
- android java 指针异常处理,Android自定义抛出异常的方法详解