`
jiapeng16
  • 浏览: 35319 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android 保存全局数据

阅读更多

最近遇到这样一个问题。就是想在这个Application中共享一些数据。比如某一个Activity,点击Menu中的某一个Item,这个Item需要弹出一个Dialog,如图..

     这个是通过我程序设定一个默认播放器,这样从我这个程序打开视频的时候可以直接走我设定的播放器,就绕过了隐式Intent的选择过程。但是我这个设定的值需要在全局使用,不管哪个Activity,都有可能要知道我设定的值,但是我又不想让程序每次都去读Shared Preference,读文件,影响效率,所以我得让这个数据全局共享起来...

 

怎么达到了...

    做法一:在当前Activity中使用public 的静态变量。当然这样可以达到目的,但出现的问题就是代码混乱,别人只要知道这个值而已,但却需要你写的这个类的类名。

    做法二:用一个Utilities.java 类,来全局共享所有需要共享的数据。这个做法第一种做法的一种提纯,在形成一定的代码标准推行后,可以达到我们的效果。可惜这种做法在目前的团队无法推广,而且它还有个致命的缺点,就是线程不安全,当然加锁可以解决问题。(这个办法学自launcher2 中的做法)。

    做法三:在我们做java web的时候,也由这种问题,当然web容器有很好的解决方案,如存在session或者application域中,一想,网上还有个哥们已经有贴了,直接贴过来(希望大家包涵)

 

1、自定义Application

 

 

Java代码 
  1. public class DemoApplication extends Application {  
  2.     private HashMap<String, Object> map = new HashMap<String, Object>();  
  3.       
  4.     public void put(String key,Object object){  
  5.         map.put(key, object);  
  6.     }  
  7.       
  8.     public Object get(String key){  
  9.         return map.get(key);  
  10.     }  
  11. }  

 

2、修改AndroidManifest.xml文件:

Xml代码 
  1. <application <strong><em>android:name="DemoApplication"</em></strong> android:icon="@drawable/app" android:label="@string/app_name">  

 注意黑色粗体字标识的内容,指定程序使用我们自己定义的Application。

 

3、使用:

在其中一个activity中将数据保存到application中定义的map中

 

Java代码 
  1. DemoApplication app = (DemoApplication)getApplication();  
  2. app.put("key""this is a test!");  

 

然后在另一个activity中去获取数据:

Java代码 
  1. DemoApplication app = (DemoApplication)getApplication();  
  2. String value =(String)app.get("key");  
  3. Toast.makeText(this, value, Toast.LENGTH_LONG).show();  
这样的话,代码看起来就整齐美观些,但是还是有问题,应为我不希望我们配Manifest 的时候需要用自定义的Application类,配置,有点麻烦。如果哪位有好的方法,留言,也好让大家学习一下。
<!--EndFragment-->
  • 大小: 28.8 KB
分享到:
评论

相关推荐

    Android Realm+gridview gridviewItem点击更新保存数据

    AndroidStudio代码。在MyApplication建立全局realm数据库,gridviewItem点击更新数据,重载或重新进入App时显示最后更新的数据!

    Android实现关机后数据不会丢失问题

    主要介绍了Android实现关机后数据不会丢失问题,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

    使用ViewModel解决多个Activity数据共享问题(Kotlin版)

    使用ViewModel解决多个Activity数据共享问题(Kotlin版)

    Android OkHttp实现全局过期token自动刷新示例

    问题 一次面试遇到的一个问题,其实也是实际开发中很容易...cookie是保存在本地终端的数据。cookie由服务器生成,发送给浏览器,浏览器把cookie以kv形式保存到某个目录下的文本文件内,下一次请求同一网站时会把该co

    Application代码演示

    在Android中全局保存数据的对象Application

    浅谈Android中关于静态变量(static)的使用问题

    项目中,在不停地接收串口数据很长一段时间(几小时)后,会偶然性的报错。初步排除了oom和cpu紧张问题,因为是工业平板不方便调试,用了些比较笨的方法最后锁定在几个用了static的地方。在这里记录下Android中使用...

    android 使用Sax解析XML 源码实例

    在您对其响应时,您不作保存的数据将会 被抛弃。 下面是一个SAX解析XML的示例(有点长,因为详细注解了SAX事件处理的所有方法),SAX API中主要有四种处理事件的接口,它们分别是ContentHandler,DTDHandler, ...

    精通ANDROID 3(中文版)1/2

    23.1.1 探索Android全局搜索  23.1.2 为全局搜索启用建议提供程序  23.2 活动与搜索键交互  23.2.1 常规活动上的搜索键行为  23.2.2 禁用了搜索的活动的行为  23.2.3 通过菜单显式调用搜索  23.2.4 ...

    Android学习笔记–通过Application传递数据代码示例

    在整个Android程序中,有时需要保存某些全局的数据(如:用户信息),方便在程序的任何地方调用。在Activity之间数据传递中有一种比较使用的方式,就是全局对象,使用过J2EE的都应该知道JavaWeb的四个作用域,其中...

    Android 中两个Activity 之间的传值问题

    在Android项目中,有时需要一些全局的静态变量来保存一些数据,这样在关闭赋值界面后,其他的页面还可以调用这些数据。  但是我们知道,在Java中全局静态变量(java中没有全局变量这一个概念,但是java提供了...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    东南大学、中国科学技术信息研究所、国家图书馆有权保留本人所送交学位论文的复印件和电子文档,可以采用影印、缩印或其他复制手段保存论文。本人电子文档的内容和纸质论文的内容相一致。除在保密期内的保密论文和在...

    精通Android 3 (中文版)2/2

    23.1.1 探索Android全局搜索  23.1.2 为全局搜索启用建议提供程序  23.2 活动与搜索键交互  23.2.1 常规活动上的搜索键行为  23.2.2 禁用了搜索的活动的行为  23.2.3 通过菜单显式调用搜索  23.2.4 ...

    Android中Property模块的键值设置

    Prop模块是保存少量的全局共享信息,其保存的数据具有信息量少,跨进程共享数据等特性;每一条信息包含两个属性,键名和键名对应的键值,例如: ro.product.locale.language=en “Ro.product.locale.language”表示...

    双鱼林安卓Android代码生成器 v2.0.zip

    com.mobileclient.app:保存应用程序类,全局变量可以放到这里,应用程序中未处理的异常可以在此被捕获到日志文件。 res/layout:各种界面布局文件! res/drawable-mdpi:程序界面中用到的图片资源文件!

    自定义统计SDKTcStatInterface.zip

    统计服务的本地缓存最长会永久保存,只要在数据有效期内上报流程被触发,就会将本地之前没上报成功的所有数据打包ZIP格式上报。如果数据上报成功,则会把已经成功的数据从本地删除。 默认的数据上报策略是UPLOAD_...

    Log 这是一个Android 轻量级简单易用的Log组件

    支持所有基本数据类型、数组、Map、List、Bundle、Intent、Reference、Throwable、...支持添加全局回调,在不影响底层输出的情况下,所有信息会回调至全局接口里,可以在这里按各种级别类型保存你需要的信息到文件中

    Android 毕业设计仿斗鱼 Flutter 设计(内附源码,下载即可)

    Android 毕业设计仿斗鱼 Flutter 设计(内附源码,下载即可) 博客地址:https://blog.csdn.net/JasonXu94?type=blog 实现的功能 1. flutter重构的斗鱼直播APP 2. 首页、娱乐为Material组件;直播间、鱼吧为纯自定义...

    Android开发人员不得不收集的代码

    getAndroidID : 获取设备 AndroidID getMacAddress : 获取设备 MAC 地址 getManufacturer : 获取设备厂商 getModel : 获取设备型号 shutdown : 关机 reboot : 重启 reboot2Recovery : 重启到 recovery reboot2...

    Android后台线程和UI线程通讯实例

    本节向你展示如何在任务中发送数据给UI线程里的对象,这...在创建线程池的类的构造器里实例化Handler对象,保存在全局变量里。用Handler(Looper)方法实例化,连接到UI线程,构造方法使用Looper对象,也是Android系统线

Global site tag (gtag.js) - Google Analytics