最近遇到这样一个问题。就是想在这个Application中共享一些数据。比如某一个Activity,点击Menu中的某一个Item,这个Item需要弹出一个Dialog,如图..图
这个是通过我程序设定一个默认播放器,这样从我这个程序打开视频的时候可以直接走我设定的播放器,就绕过了隐式Intent的选择过程。但是我这个设定的值需要在全局使用,不管哪个Activity,都有可能要知道我设定的值,但是我又不想让程序每次都去读Shared Preference,读文件,影响效率,所以我得让这个数据全局共享起来...
怎么达到了...
做法一:在当前Activity中使用public 的静态变量。当然这样可以达到目的,但出现的问题就是代码混乱,别人只要知道这个值而已,但却需要你写的这个类的类名。
做法二:用一个Utilities.java 类,来全局共享所有需要共享的数据。这个做法第一种做法的一种提纯,在形成一定的代码标准推行后,可以达到我们的效果。可惜这种做法在目前的团队无法推广,而且它还有个致命的缺点,就是线程不安全,当然加锁可以解决问题。(这个办法学自launcher2 中的做法)。
做法三:在我们做java web的时候,也由这种问题,当然web容器有很好的解决方案,如存在session或者application域中,一想,网上还有个哥们已经有贴了,直接贴过来(希望大家包涵)
1、自定义Application
- public class DemoApplication extends Application {
- private HashMap<String, Object> map = new HashMap<String, Object>();
-
- public void put(String key,Object object){
- map.put(key, object);
- }
-
- public Object get(String key){
- return map.get(key);
- }
- }
2、修改AndroidManifest.xml文件:
- <application <strong><em>android:name="DemoApplication"</em></strong> android:icon="@drawable/app" android:label="@string/app_name">
注意黑色粗体字标识的内容,指定程序使用我们自己定义的Application。
3、使用:
在其中一个activity中将数据保存到application中定义的map中
- DemoApplication app = (DemoApplication)getApplication();
- app.put("key", "this is a test!");
然后在另一个activity中去获取数据:
- DemoApplication app = (DemoApplication)getApplication();
- String value =(String)app.get("key");
- Toast.makeText(this, value, Toast.LENGTH_LONG).show();
这样的话,代码看起来就整齐美观些,但是还是有问题,应为我不希望我们配Manifest 的时候需要用自定义的Application类,配置,有点麻烦。如果哪位有好的方法,留言,也好让大家学习一下。
<!--EndFragment-->
- 大小: 28.8 KB
分享到:
相关推荐
AndroidStudio代码。在MyApplication建立全局realm数据库,gridviewItem点击更新数据,重载或重新进入App时显示最后更新的数据!
主要介绍了Android实现关机后数据不会丢失问题,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
使用ViewModel解决多个Activity数据共享问题(Kotlin版)
问题 一次面试遇到的一个问题,其实也是实际开发中很容易...cookie是保存在本地终端的数据。cookie由服务器生成,发送给浏览器,浏览器把cookie以kv形式保存到某个目录下的文本文件内,下一次请求同一网站时会把该co
在Android中全局保存数据的对象Application
项目中,在不停地接收串口数据很长一段时间(几小时)后,会偶然性的报错。初步排除了oom和cpu紧张问题,因为是工业平板不方便调试,用了些比较笨的方法最后锁定在几个用了static的地方。在这里记录下Android中使用...
在您对其响应时,您不作保存的数据将会 被抛弃。 下面是一个SAX解析XML的示例(有点长,因为详细注解了SAX事件处理的所有方法),SAX API中主要有四种处理事件的接口,它们分别是ContentHandler,DTDHandler, ...
23.1.1 探索Android全局搜索 23.1.2 为全局搜索启用建议提供程序 23.2 活动与搜索键交互 23.2.1 常规活动上的搜索键行为 23.2.2 禁用了搜索的活动的行为 23.2.3 通过菜单显式调用搜索 23.2.4 ...
在整个Android程序中,有时需要保存某些全局的数据(如:用户信息),方便在程序的任何地方调用。在Activity之间数据传递中有一种比较使用的方式,就是全局对象,使用过J2EE的都应该知道JavaWeb的四个作用域,其中...
在Android项目中,有时需要一些全局的静态变量来保存一些数据,这样在关闭赋值界面后,其他的页面还可以调用这些数据。 但是我们知道,在Java中全局静态变量(java中没有全局变量这一个概念,但是java提供了...
东南大学、中国科学技术信息研究所、国家图书馆有权保留本人所送交学位论文的复印件和电子文档,可以采用影印、缩印或其他复制手段保存论文。本人电子文档的内容和纸质论文的内容相一致。除在保密期内的保密论文和在...
23.1.1 探索Android全局搜索 23.1.2 为全局搜索启用建议提供程序 23.2 活动与搜索键交互 23.2.1 常规活动上的搜索键行为 23.2.2 禁用了搜索的活动的行为 23.2.3 通过菜单显式调用搜索 23.2.4 ...
Prop模块是保存少量的全局共享信息,其保存的数据具有信息量少,跨进程共享数据等特性;每一条信息包含两个属性,键名和键名对应的键值,例如: ro.product.locale.language=en “Ro.product.locale.language”表示...
com.mobileclient.app:保存应用程序类,全局变量可以放到这里,应用程序中未处理的异常可以在此被捕获到日志文件。 res/layout:各种界面布局文件! res/drawable-mdpi:程序界面中用到的图片资源文件!
统计服务的本地缓存最长会永久保存,只要在数据有效期内上报流程被触发,就会将本地之前没上报成功的所有数据打包ZIP格式上报。如果数据上报成功,则会把已经成功的数据从本地删除。 默认的数据上报策略是UPLOAD_...
支持所有基本数据类型、数组、Map、List、Bundle、Intent、Reference、Throwable、...支持添加全局回调,在不影响底层输出的情况下,所有信息会回调至全局接口里,可以在这里按各种级别类型保存你需要的信息到文件中
Android 毕业设计仿斗鱼 Flutter 设计(内附源码,下载即可) 博客地址:https://blog.csdn.net/JasonXu94?type=blog 实现的功能 1. flutter重构的斗鱼直播APP 2. 首页、娱乐为Material组件;直播间、鱼吧为纯自定义...
getAndroidID : 获取设备 AndroidID getMacAddress : 获取设备 MAC 地址 getManufacturer : 获取设备厂商 getModel : 获取设备型号 shutdown : 关机 reboot : 重启 reboot2Recovery : 重启到 recovery reboot2...
本节向你展示如何在任务中发送数据给UI线程里的对象,这...在创建线程池的类的构造器里实例化Handler对象,保存在全局变量里。用Handler(Looper)方法实例化,连接到UI线程,构造方法使用Looper对象,也是Android系统线