Activity之间的数据传递.

Slides:



Advertisements
Similar presentations
北京爱迪科森教育科技股份有限公司 爱迪科森就业培训数据库 开篇 —— 就业培训 职业生涯的开始.
Advertisements

长春工程学院图书馆. CHANGCHUN INSTITUTE OF TECHNOLOGY 资源介绍 爱迪科森就业培训数据库涵盖了学历考试类、应用英语类、 出国考试类、职业英语类、小语种以及职业认证培训、研 究生考试、公务员考试等课程资源,为高校师生提供英语 基础、小语种入门、考前辅导、求职指导等全方位培训。
开发入门 一个 android 初学者的心得与体会. 前言 两周前张老师通知我说,让我根据教练助手的学习与开发的过程讲下 android 开发的心得与体会,我觉得自己在这么多 Android 前辈大佬面前讲 android 简 直是班门弄斧。由于是刚入门的初学者,水平有限,很多方面还很不足,对 错误或不周到之处欢迎批评指正。顺便还得提下,我这个标题有抄袭积聚童.
三餐美食 经销商 三餐美食产品经销必读 2 三餐美食经销商 1 前言 三餐美食经销商是三餐美食餐饮系统重要的合作伙伴,同时也是三餐美食发展道路上最坚定不移的 支持者。为了让所有的经销商伙伴能够通过销售三餐美食产品快速致富,三餐美食总部根据三餐美食产 品开发和市场情况,为经销商伙伴们编撰了《经销商必读》,希望该手册能够让大家对三餐美食有更深.
微信营销宝典. 什么是微信? 微信是腾讯公司于 2011 年初推出的一款通过网络 快速发送语音短信、视频、图片和文字,支持多 人群聊的手机聊天软件。
玩转安卓智能手机 工程师 王东亮 图书馆 手机的发展 手机已经不仅仅是一个通讯设备,在智能系统的潮流之下, 手机已经成了一个多媒体的智能移动终端 有人喜欢用手机上 QQ ,玩微博,看网页;有人喜欢听歌, 拍照,玩游戏;有人利用手机进行日程的安排和办公 ······
一、老师申请题目,以下指导老 师操作。 1. 登录教务系统 web 端. 2. 点击 “ 毕业设计 ” 工具栏下拉菜单中的 “ 论文 _ 教师申请题目 ”
职业指导服务系统 欢迎了解职业指导服务系统!
Android开发入门 -----第一个Android程序 主讲:李晓蕾
母 婴 护 理 师 制作:小九.
課程地圖 (104年入學-日間部) 校通識核心 專業課程 必修與選修 與管理模組 網路技術 App設計與應用模組 學院通識核心 學院專業核心
開南大學 資訊管理學系 學分學程相關說明.
C语言程序设计 李伟光.
清华大学 罗念龙 2004年6月 集成学生系统 清华大学 罗念龙 2004年6月.
工作学习汇报 高琦.
教學經驗分享 吳毅成 國立交通大學資訊工程系 2012年4月.
综合实验 ----实验选作(1/3) 智能五子棋游戏 1. 实验目的
EF少儿英语学习研究报告(北京).
提高自身素质做好 新时期班主任工作 北京市广渠门中学 高金英.
我們通常都會稱自己為香港人?還是中國人? 為甚麼回歸了,人們口頭上不說是中國人,而是香港人呢?
未来协同项目计划书.
峰信 电话管理系统 产品介绍 上海艾家电子商务有限公司 2011年7月.
普通话模拟测试 与学习平台 使用指南.
香港普通話研習社科技創意小學 周順強老師.
第八章 网络课程的设计与开发.
網路小說劇情建構與伏線營造 Windows98.
《呼叫中心从优秀到卓越》 ——黄 科.
----银行间的比较 论资本构成与充足率 淡 彩 的 黑 板 淡 彩 的 黑 板 金融73班 王艺霏 王 英
关于整合检验检测认证机构实施意见的通知(国办发〔2014〕8号)
互联网时代班主任的挑战 万玮 2014年9月20日.
精英型软件人才 培养模式的探索与实践 卢 苇 北京交通大学国家示范性软件学院.
推进德育创新 做好新时期班主任工作 北京市广渠门中学 高金英.
荷福威士顿机器人科技有限公司 上海荷福集团
江西省专业技术人员 继续教育信息管理系统.
苏州大汇信息科技有限公司 招聘简介.
韩 焱 中北大学 (原华北工学院、太原机械学院)
厦门大学数据库实验室 报告人:谢荣东 导师:林子雨 2014年8月30日
mashup 林維甫 郭家伶 吳佩珊 蔡小倩 楊士毅 曾仕豪 Marshup起源 何謂Mashup Mashup類型 Mashup架構
Android程式開發準備 Android智慧型手機程式設計 建國科技大學 資管系 饒瑞佶 2012/4 V1 2012/8 V2
Introduction on Smartphone Platform
鄉村尋根-農具篇.
Ch5 Android應用程式的主要組成.
第9章 使用意圖啟動活動與內建應用程式 9-1 意圖的基礎 9-2 使用意圖啟動活動
ANDROID PROGRAMMING2.
ARM裸机第一部分-ARM那些你得知道的事
第一章 認識Java Java 程式設計入門(I).
建立Android新專案 Android智慧型手機程式設計 程式設計與應用班 建國科技大學 資管系 饒瑞佶 2012/4 V1
第8章 Service解析.
《网上报告厅》使用说明 北京爱迪科森教育科技股份有限公司.
Android 视频教程简介.
福智 學員平台 2018/6/9 幹部月會 羅東教室.
Android智慧型手機程式設計實務應用班
Android 开发入门.
指 導 老 師 : 王 文 彥 老 師 組 員 : 4970E099 吳 家 齊 4970E023 江 弘 喻 4970E024 梁 森 凱
網路應用.
基于App Inventor的物联网工程导论课程实验设计
實驗十六:匯出APK安裝檔與軟體上架.
“修身成材” 班级干部培训班 黑龙江大学党委学工部.
方格紙上畫正方形.
用Intent啟動程式中的其他Activity、運用WebView顯示網頁 靜宜大學資管系 楊子青
LogBase运维安全管理系统(堡垒机)使用说明
Android进程间通讯.
第6章 Android客户端模块实现 QQ群(App开发案例教程--清华) :
LogBase运维安全管理系统(堡垒机)使用说明
104學年度 進修學校期初工作報告.
----以《西北民族音乐学术资源数据库》为例 西安音乐学院 景 月 亲
控制UI界面 本讲大纲: 1、使用XML布局文件控制UI界面 2、在代码中控制UI界面 3、使用XML和Java代码混合控制UI界面
Part 8 Broadcast Receiver、Service和App Widget
共同作業的 7 種方法 使用 PowerPoint 與其他人共同編輯 查看誰正在使用 與他人共用簡報 以便共同編輯。 目前狀態指示器會顯示
社群定位資訊系統 葉國賢 組員: 吳俊億 鄧硯文 郭冠良 魏毓男
Presentation transcript:

Activity之间的数据传递

Activity之间的数据传递 在实际的应用开发中,不同的Activity之间进行切换的时候不可避免的进行数据传递,下面我们来介绍4种最常用的数据传递方法: 通过Intent传递数据 通过静态变量传递数据 通过剪切板传递数据 通过全局对象传递数据

Intent传递数据 什么是Intent Intent是一种运行时绑定(runtime binding)机制,它能在程序运行的过程中连接两个不同的组件。通过Intent,程序可以向Android表达某种请求或者意愿,Android会根据意愿的内容选择适当的组件来请求。 Intent负责对应用中一次操作的动作(动作涉及数据、附加数据)进行描述,Android根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。 因此,Intent起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。 使用Intent传递数据 这是最常用的一种数据传递的方法。通过Intent类中的putExtra方法可以将简单类型的数据或序列化的对象保存到Intent对象中,然后在目标的Activity中使用getXxx(getInt、getString等)方法取出对应的数据。

Intent传递数据 将数据保存到Intent对象的代码如下: 在OtherActivity类中获取上面保存的3个值的代码如下:

Intent传递数据 Intent传递对象时只能是可序列化的对象,而序列化对象有两种方式:java.io.Serializable和android.os.Parcelable。 Java中使用的是Serializable,而Android使用自定义的Parcelable。Parcelable定位为针对内存受限的设备,对性能要求更高,另外android系统中采用了新的IPC(进程间通信)机制,必然要求使用性能更出色的对象传输方式。它们的区别是: 在使用内存的时候,Parcelable比Serializable性能高 Serializable序列化的时候会产生大量的临时变量,从而引起频繁的GC Parcelable不能使用在要将数据存储在磁盘上的情况,因为Parcelable不能很好的保证数据的持续性在外界有变化的情况下,这种情况建议使用Serializable

Intent传递数据 使用Serializable:

Intent传递数据 使用Parcelable:

静态变量传递数据 使用Intent可以很方便在不同的Activity之间传递数据,这也是官方推荐的方式,但是也有一定的局限性,就是Intent无法传递不能序列化的对象,也就是没有实现java.io.Serializable接口的类的对象。而静态变量就是一种非常方便、易用的的传递数据的方法。 代码如下:

静态变量传递数据 想要在OtherActivity中获取这些静态变量的值,需要在显示OtherActivity之前(startActivity方法之前)为这些变量赋值 代码如下:

剪切板传递数据 在Activity之间数据传递还可以利用一些技巧,不管是Windows还是Linux,都会支持一种叫剪切板的技术,也就是某一个程序将一些数据复制到剪切板上,然后其他的程序都可以从剪切板中获取这些数据。因此在Activity之间传递数据也可以利用这种技术。代码如下: 从剪切板中获得这个字符串的代码如下:

剪切板传递数据 ClipboardManager对象只支持向剪切板读写字符串,并不支持其他类型的数据。那么如何传递这些数据呢,其实也很简单,比如int、bool等可以转换为字符串进行传递,而对象类型则必须是可序列化的对象才可传递。以Base64编码格式传递可序列化的对象为例:

剪切板传递数据 将Base64编码的字符串进行解码:

全局对象传递数据 虽然使用静态变量可传递任何类型数据,但官方并不建议这样做。 大量使用静态变量可能造成内存溢出异常 静态变量在很多类中出现会造成代码难以维护和混乱 全局对象这种优雅的数据传递方式可解决以上的问题,并能完全取代静态变量。 Android中的全局对象类似于Java Web中的Application域,如果没有将应用程序从内存中彻底清除,那么全局对象将一直可以访问。编写时需注意以下几点: 全局对象所对应的类必须是android.app.Application的子类 全局类中不需定义静态变量,只定义成员变量即可 全局类中必须有一个无参数的构造方法或不编写任何代码的构造方法

全局对象传递数据 另外只编写一个全局类是不会自动创建全局类对象,需要在配置文件AndroidManifest.xml中通过<application>标签的android:name属性指定这个类,否则系统不知道哪个类是全局类。指定全局类后,在程序运行后全局对象就会被自动创建,而且会一直在内存中驻留,直到应用程序彻底退出内存。

全局对象传递数据 获取MyApp对象,并为对象中字段赋值,代码如下: 显示修改后的MyApp对象中字段的值,代码如下:

从Activity中返回数据 在实际应用中,我们不仅要向Activity传递数据,而且要从Activity中返回数据,虽然返回数据和传递数据类似,也可以采用前面4种方法,但是一般建议采用Intent对象的方式来返回数据,使用这种方式返回数据,需要使用startActivityForResult方法来显示Activity。 代码如下: 其中startActivityForResult方法第二个参数是一个int类型的请求码,可以是任意的整数,只是为了区分请求的来源,以便处理返回结果。

从Activity中返回数据 在打开的Activity中设置返回数据,代码如下: 从OtherActivity返回后,需要覆盖onActivityResult方法来处理返回的结果,如下: