android 数据共享
android数据共享的各种部件中的应用是最重要的3途径:
第一。使用Application子类来实现数据共享。
例如,请看下面的例子:
/**
* @author YangQuanqing 特征:据共享
*/
public class DataApplication extends Application {
// private static FFtThread fftThread = null;// 傅立叶变换线程对象申明
private static ImageNum tempResult = null;// 傅立叶变换结果实例申明
private static byte[] rawDataTemp = null;// 录音原始数字信号
private static ImageNum[] result = null;// 傅立叶变换后的结果保存
private static int nEndFrame,nStartFrame ;
public DataApplication() {
}
/**
* @return the nEndFrame
*/
public static int getnEndFrame() {
return nEndFrame;
}
/**
* @param nEndFrame the nEndFrame to set
*/
public static void setnEndFrame(int nEndFrame) {
DataApplication.nEndFrame = nEndFrame;
}
/**
* @return the nStartFrame
*/
public static int getnStartFrame() {
return nStartFrame;
}
/**
* @param nStartFrame the nStartFrame to set
*/
public static void setnStartFrame(int nStartFrame) {
DataApplication.nStartFrame = nStartFrame;
}
/**
* 函数名:setRawData 功能:将原始的数字信号用全局变量保存在内存中 參数:rawDataTemp1用于保存的原始数字信号
*/
public static void setRawData(byte[] rawDataTemp1) {
rawDataTemp = rawDataTemp1;
}
/**
* 函数名:getRawDataTemp 功能:获得用全局变量保存在内存中的数字信号 返回值:返回原始数字信号
*/
public static byte[] getRawDataTemp() {
return rawDataTemp;
}
/**
* 函数名:setFFTRusult 功能:将经过FFT变换后的数字信号用全局变量保存在内存中
*
*/
public static void setFFTRusult(ImageNum[] result1) {
result = result1;
}
/**
* 函数名:getFFTRusult 功能:获得用全局变量保存在内存中的FFT后的结果 返回值:返回FFT后的结果
*/
public static ImageNum[] getFFTRusult() {
return result;
}
/**
* 函数名:getFFTRusult 功能:获得用全局变量保存在内存中的FFT后的结果 返回值:返回FFT后的结果
*/
public static ImageNum getTempResult() {
return tempResult;
}
/**
* 函数名:setFFTRusult 功能:将经过FFT变换后的数字信号用全局变量保存在内存中
*
*/
public static void setTempResult(ImageNum image) {
DataApplication.tempResult = image;
}
}
须要注意的是该类必须是静态方法。才干实现数据共享。
第二,利用剪切板实现数据共享
在Android开发中我们常常要遇到的一个问题就是数据在不同的Activity之间的共享。在Android开发中有非常多种方法能够达到这个目地。
这里介绍一种比較常见、又经常使用的一种方法就是使用剪切板。
调用服务
[java] view plaincopy
1 ClipboardManager clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
这里须要注意的是,在android版本号11之前,利用剪切板传递数据是使用setText和getText方法。但在版本号11以后。这两个getText和set方法就被丢弃了。转而取代的是须要用到ClipData对象来传递数据。
相比于getText和setText方法,利用ClipData对象来传递数据。更符合面向对象的编程思维,且所能传递数据的类型也很多其它。关于ClipData对象的说明,请參阅ClipData对象说明。
这里介绍的是利用ClipData传递字符串
1.将值写入剪切板
[java] view plaincopy
2 ClipData cd = ClipData.newPlainText("label", baseToString);
3 clipboardManager.setPrimaryClip(cd);
2.读取剪切板的值
[java] view plaincopy
4 if(cm.getPrimaryClipDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN))
5 {
6 ClipData cd = cm.getPrimaryClip();
);
8 txtView.setTextitem.getText().toString());
9 }
这样就能够利用剪切板来传递数据了。
这里须要说明的是在实际编程中。如真须要利用剪切板来传值。须要在调用服务之前来推断android系统的版本号。
[java] view plaincopy
10 Build.VERSION.SDK_INT>=Build.VERSION_CODES.HONEYCOMB
如须要利用自己定义对象来传值。则在利用剪切板时。须对对象进行转换。
这里我们须要用到base64这个工具类。关于此类的使用方法。请參阅Base64类。
1.读取自己定义对象,并将其转换为字符串,写入剪切板
[java] view plaincopy
11 //自己定义一个对象
);
13 //定义字符串
14 String baseToString ="";
15 //1.将对象转换成字符串
16 ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
17 try
18 {
19 ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
20 objectOutputStream.writeObject(md);
21 baseToString = Base64.encodeToString(byteArrayOutputStream.toByteArray(), Base64.DEFAULT);
22 objectOutputStream.close();
23 }
24 catch(Exception e)
25 {
26 e.printStackTrace();
27 }
2.读取剪切板的字符串,并将其转换为对象
[java] view plaincopy
28 //将base64转换成toString
29 byte[] base64ToString = Base64.decode(item.getText().toString(), Base64.DEFAULT);
30 //从流中读取数据
31 ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(base64ToString);
32 try
33 {
34 ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);
35 MyData md = (MyData)objectInputStream.readObject();
36 objectInputStream.close();
37 txtView.setText(md.toString());
38 }
39 catch(Exception e)
40 {
41 e.printStackTrace();
42 }
这里。主要用到了IO中一些流的操作。须要注意的是。不管是读取流还是写入流。在使用完之后。都必须关闭
第三。通过意图Intent实现数据共享。
意图能够传递基本数据,能够通过对象。
当传递对象,在定义所述第一序列的时间的对象的类!
版权声明:本文博客原创文章。博客,未经同意,不得转载。
android 数据共享的更多相关文章
- Android数据共享
Android数据共享 在Android应用程序开发的过程中,借助Bundle类对象来传递数据并不是在所有场景下都适用,就那简单的Intent类对象来说,就不能put进Bundle类对象中.当然不能否 ...
- 继承Application实现Android数据共享
Application类 在Android中,启动一个应用,首先会初始化Application,然后再通过它检查AndroidManifest.xml清单文件,选择须要首先启动的Activi ...
- 继承Application管理生命周期
继承Application实现Android数据共享 http://www.jianshu.com/p/75a5c24174b2 jessyan提出一个思路,用Application + 接口来管理扩 ...
- android: 实现跨程序数据共享
简单起见,我们还是在上一章中 DatabaseTest 项目的基础上继续开发,通过内容提供器 来给它加入外部访问接口. 打开 DatabaseTest 项目,首先将 MyDatabaseHelper ...
- Android 学习笔记之ContentProvider实现数据共享....
PS:最近听老师说打算让我参与企业的app制作,让我加快学习的进度...好吧,貌似下周还有考试...貌似实验室这个app也要做...暂时不管了...那就只能加快进度了,感觉略微的有点激动和紧张,总算是 ...
- android 通过wifi 热点实现手机摄像头数据共享(转)
原文地址:http://blog.csdn.net/sinat_35845281/article/details/52674946 最近想搞一个新奇的玩意儿~~~ 最近一直在在学习通过两个Androi ...
- Android ContentProvider数据共享
一.构造一个自己的Provider实现App之间数据共享 1.我们先来了解一下 Uri(统一资源定位符) 定义:每一个Content Provider使用一个公开的URI唯一标示其数据集,Andr ...
- 【转】 Pro Android学习笔记(八四):了解Package(3):包间数据共享
目录(?)[-] 共享User ID的设置 共享资源例子 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowing ...
- android 多应用程序数据共享 ContentProvider和ContentResolver
android 没有一个可以将所有应用程序数据统一放置的地方,即两个应用程序间的数据不能共享.但ContentProvider与ContentResolver可以解决多应用程序数据共享. 我们都知 ...
随机推荐
- Java中使用Lua脚本语言(转)
Lua是一个实用的脚本语言,相对于Python来说,比较小巧,但它功能并不逊色,特别是在游戏开发中非常实用(WoW采用的就是Lua作为脚本的).Lua在C\C++的实现我就不多说了,网上随便一搜,到处 ...
- HDU 5052 LCT
Yaoge's maximum profit Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/ ...
- Akka.NET是Java/Scala 流行框架Akka的一个 .NET 开源移植
Akka.NET v1.0 已发布,支持Mono Akka.NET 是Java/Scala 流行框架Akka的一个 .NET 开源移植.可用于构建高并发,分布式和容错事件驱动的应用在 .NET 和 M ...
- php调用webservice的几种方法
原文:php调用webservice的几种方法 1.WSDL模式: $soap = new SoapClient("http://192.168.6.69:8899/Service1.asm ...
- table插入标签form标记怪现象
最近帮朋友处理问题,它无法提交表单,得到一些时间,我发现了一个奇怪的问题 <table> <form action="upload.php" method=&qu ...
- sql 中获取最后生成的标识值 IDENT_CURRENT ,@@IDENTITY ,SCOPE_IDENTITY 的用法和区别
原文:sql 中获取最后生成的标识值 IDENT_CURRENT ,@@IDENTITY ,SCOPE_IDENTITY 的用法和区别 IDENT_CURRENT 返回为任何会话和任何作用域中的指定表 ...
- LINQ之路(3):LINQ扩展
本篇文章将从三个方面来进行LINQ扩展的阐述:扩展查询操作符.自定义查询操作符和简单模拟LINQ to SQL. 1.扩展查询操作符 在实际的使用过程中,Enumerable或Queryable中的扩 ...
- Servlet实例解说
打开昨天上午,负责人突然问我,client控制信息,如何让在后台?我想回答:假设总体提交form,在C#使用代码request获取表单的内容.假设局部提交,在用JS和Ajax交互,通过Ajax的ope ...
- ASP.NET MVC:01理解MVC模式
ASP.NET MVC是ASP.NET Web应用程序框架,以MVC模式为基础. MVC:Model View Controller 模型-视图-控制器Model(模型):负责对数据库的存取View( ...
- 亚马逊记AWS(Amazon Web Services)自由EC2应用
很长时间,我听到AWS能够应用,但是需要结合信用卡,最近申请了. 说是免费的,我还是扣6.28,后来我上网查了.认为是通过进行验证.像服务期满将返回. 关键是不要让我进入全抵扣信用卡支付passwor ...