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

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 数据共享的更多相关文章

  1. Android数据共享

    Android数据共享 在Android应用程序开发的过程中,借助Bundle类对象来传递数据并不是在所有场景下都适用,就那简单的Intent类对象来说,就不能put进Bundle类对象中.当然不能否 ...

  2. 继承Application实现Android数据共享

         Application类 在Android中,启动一个应用,首先会初始化Application,然后再通过它检查AndroidManifest.xml清单文件,选择须要首先启动的Activi ...

  3. 继承Application管理生命周期

    继承Application实现Android数据共享 http://www.jianshu.com/p/75a5c24174b2 jessyan提出一个思路,用Application + 接口来管理扩 ...

  4. android: 实现跨程序数据共享

    简单起见,我们还是在上一章中 DatabaseTest 项目的基础上继续开发,通过内容提供器 来给它加入外部访问接口. 打开 DatabaseTest 项目,首先将 MyDatabaseHelper ...

  5. Android 学习笔记之ContentProvider实现数据共享....

    PS:最近听老师说打算让我参与企业的app制作,让我加快学习的进度...好吧,貌似下周还有考试...貌似实验室这个app也要做...暂时不管了...那就只能加快进度了,感觉略微的有点激动和紧张,总算是 ...

  6. android 通过wifi 热点实现手机摄像头数据共享(转)

    原文地址:http://blog.csdn.net/sinat_35845281/article/details/52674946 最近想搞一个新奇的玩意儿~~~ 最近一直在在学习通过两个Androi ...

  7. Android ContentProvider数据共享

    一.构造一个自己的Provider实现App之间数据共享 1.我们先来了解一下   Uri(统一资源定位符) 定义:每一个Content Provider使用一个公开的URI唯一标示其数据集,Andr ...

  8. 【转】 Pro Android学习笔记(八四):了解Package(3):包间数据共享

    目录(?)[-] 共享User ID的设置 共享资源例子 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowing ...

  9. android 多应用程序数据共享 ContentProvider和ContentResolver

      android 没有一个可以将所有应用程序数据统一放置的地方,即两个应用程序间的数据不能共享.但ContentProvider与ContentResolver可以解决多应用程序数据共享. 我们都知 ...

随机推荐

  1. WebAPI通过multipart/form-data方式同时上传文件以及数据(含HttpClient上传Demo)

    简单的Demo,用于了解WebAPI如何同时接收文件及数据,同时提供HttpClient模拟如何同时上传文件和数据的Demo,下面是HttpClient上传的Demo界面 1.HttpClient部分 ...

  2. C# HttpClient Cookie验证解决方法

    自实现的cookie 验证,远程取值的例子 以下代码配合HttpClient使用可以实现跨域(cookie的读写) //验证 复制代码 代码如下: HttpClient httpClient = ne ...

  3. 谷歌上不去,长期的解决方案。在稳定高速Google和Gmail

    对稳定Google神器 国内Google很不稳定,缓慢并经常上不去,由"我想去Google",安全和稳定的使用Google.Gmail.Google+所以通常需要特殊的手段岗位胜任 ...

  4. ajax jsonp跨域

    js跨域问题是指:js不同域进行数据传输或通信之间,让我们用ajax到不同的域请求数据.或js获得在不同领域的框架页(iframe)数据.只有到协议.域名.port无论是有不同的.它们被认为是不同的域 ...

  5. win7下go web之revel

    win7下go web之revel安装   接着上回记录的win7下go环境搭建,go的开发,现在除了sublime外,LiteIDE比较推荐,下载链接 下载安装后直接打开,需要配置下go环境(本机使 ...

  6. POJ3061 Subsequence(二进制前缀和法律+仿真足)

    二分法+前缀和法律 满足子序列长度的条件(0,n)之间,sum[x+i]-sum[i]从i元素开始序列长度x和.前缀和可在O(n)的时间内统计 sum[i]的值.再用二分找出满足条件的最小的子序列长度 ...

  7. 大数据的胖哥的方式(9)- 金融业数据仓库的逻辑模型FS-LDM

    介绍: 大数据是不是海市蜃楼,来自小橡子只是意淫奥克斯,大数据的发展,而且要从头开始,基于大数据建设国家.项目-level数据中心行业将越来越多,大数据仅供技术,而非溶液,临数据组织模式,数据逻辑模式 ...

  8. Gradle 载入中 Android 下一个.so档

    1.在project下新建 jni/libs  目录   . jni 是和原来的libs  同级 ,将全部的.so文件放入 新建的libs文件下 2.在build.gradle 文件里新增下面内容到a ...

  9. LINQ之路(2):LINQ to SQL本质

    LINQ之路(2):LINQ to SQL本质 在前面一篇文章中回顾了LINQ基本语法规则,在本文将介绍LINQ to SQL的本质.LINQ to SQL是microsoft针对SQL Server ...

  10. VMWARE虚拟机无法访问的三种方法分析

    bridged(桥接模式). NAT(网络地址转换模式) host-only(主机模式). 理论认识: 1.bridged(桥接模式) 在这个地方模式.虚拟机等同于网络内的一台物理主机,可对手动设置I ...