`
jiapeng16
  • 浏览: 35723 次
  • 性别: 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 Application全局传值替代Intent

    在这个`MyApplication`类中,我们定义了一个静态成员`instance`来保存`Application`实例,以及一个`sharedValue`来存储全局变量。`onCreate()`方法用于初始化`instance`,并提供`getInstance()`方法以便在其他组件中...

    AndroidCrash全局崩溃异常捕获

    AndroidCrash全局崩溃异常捕获机制就是为了这一目的而设计的。它是一种技术手段,用于在应用程序出现未预期错误导致崩溃时,提供友好的用户反馈界面,同时收集设备信息和异常详情,并将这些数据发送到服务器进行分析...

    android全局异常捕获

    这样,我们可以在异常发生时进行一些定制化的操作,如记录日志、提示用户、保存数据等,而不是让应用简单地崩溃。 在Android中,我们可以通过创建一个自定义的`Thread.UncaughtExceptionHandler`并将其设置为应用的...

    android工程全局异常处理-将未处理异常日志保存在文件中,可后续开发提交至服务器

    在Android应用开发中,异常处理是一项至关重要的...总的来说,通过创建一个全局的`ExceptionHandler`,我们可以有效地捕获和记录应用中的未处理异常,这不仅提高了用户体验,也为后续的调试和优化提供了宝贵的数据。

    Android中用Application类实现全局变量

    因此,`Application`非常适合用来保存全局性的数据或对象。 #### 2. 实现全局变量的方法 我们可以继承`Application`类并创建自己的`Application`子类,然后在这个子类中定义全局变量。下面通过一个具体的例子来...

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

    cookie是保存在本地终端的数据,由服务器生成,发送给浏览器,浏览器把cookie以kv形式保存到某个目录下的文本文件内,下一次请求同一网站时会把该cookie发送给服务器。token是用户身份的验证方式,最简单的token组成...

    Android全局异常捕获及上传服务器

    本主题将深入探讨Android全局异常捕获的机制,以及如何将捕获到的异常信息加密后上传到服务器。 首先,让我们了解如何实现全局异常捕获。在Android中,我们可以创建一个`Thread.UncaughtExceptionHandler`的实现类...

    Android实现数据存储技术

    Android 平台中实现数据存储的五种方式分别是:使用 SharedPreferences 存储数据、文件存储数据、SQLite 数据库存储数据、使用 ContentProvider 存储数据和网络存储数据。 使用 SharedPreferences 存储数据 ...

    Android Fragment 全局的导航

    本教程将深入探讨如何在Android项目中实现全局的Fragment导航,以便在各个子页面中保持一致的用户体验,同时模仿iPhone的导航模式。 首先,了解Fragment的基本概念。Fragment可以看作是Activity的一部分,有自己的...

    android ini文件 sharePrefernces 保存数据

    `SharedPreferences`是Android系统提供的一种轻量级的数据存储机制,常用于保存应用程序中的配置信息或用户设置。它以键值对(key-value pairs)的形式来存储数据,支持基本数据类型如布尔、整型、浮点型、字符串等...

    Android全局捕获崩溃异常记录日志保存至本地并定时删除

    为了解决这个问题,开发者通常会实现全局异常捕获机制,以便在程序崩溃时记录异常信息,并将这些日志保存到本地。此外,为了维护存储空间的有效利用,日志还需要定时清理。本文将详细介绍如何在Android中实现这一...

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

    本项目"Android Realm+gridview gridviewItem点击更新保存数据"着重展示了如何在Android应用中结合Realm数据库和GridView控件,实现数据的动态更新与持久化存储。 首先,`MyApplication`是自定义的应用程序类,通常...

    Android学习之数据存储

    在Android应用开发中,数据存储是一项至关重要的任务,它涉及到应用程序如何持久化用户数据、配置信息或者应用程序状态。本资源“Android学习之数据存储”提供了一些关于Android数据存储的源码,这对于理解Android...

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

    Android 实现关机后数据不会丢失问题是指在 Android 应用程序中,如何在关机或异常情况下保存数据,以免数据丢失。本文将详细介绍如何使用 AndroidViewModel、SavedStateHandle 和 SharedPreferences 实现关机后...

    全局异常捕获,并保存在本地

    因此,实现全局异常捕获并保存在本地是至关重要的,它允许开发者收集这些错误信息,以便于后期分析和修复。 全局异常捕获通常通过在应用的最顶层设置一个异常处理器来实现。这个处理器就像一个安全网,当任何地方抛...

    Android-Application被回收引发空指针异常分析(消灭全局变量

    1. 使用单例模式:创建一个单例类来保存全局变量,这样即使Application被回收,单例中的数据仍然可以保持。单例类应设计为静态内部类,以确保只有在首次使用时才会初始化。 2. 使用SharedPreferences:对于不需要...

    【Android】使用GLSurfaceView+Canera预览+保存帧Bitmap

    这个【Android】使用GLSurfaceView+Canera预览+保存帧Bitmap的项目,提供了一个完整的示例,让我们深入了解一下这两个组件如何协同工作。 首先,`GLSurfaceView`是Android系统为了高效地显示OpenGL ES图形而设计的...

    android全局crash捕获

    "Android全局Crash捕获"是一种技术手段,用于监控和处理应用运行时可能出现的异常情况,以防止程序突然崩溃并丢失用户数据。这个Demo提供了捕获和记录这些异常日志的方法,帮助开发者追踪并修复错误。 首先,我们要...

    Eclipse编写的Android全局变量应用实例

    在Android开发中,全局变量的使用是相当普遍的,它们可以跨多个活动(Activities)或整个应用程序保持数据的持久性。本教程将基于Eclipse V4.2.0这一版本的集成开发环境(IDE),深入讲解如何在Android项目中创建和...

    Android错误日志保存并上传服务器

    接下来,为了保存日志到本地,我们需要在应用中创建一个文件,通常放在外部存储(external storage)的私有目录下,以保护用户数据。使用`Environment.getExternalStorageDirectory()`获取外部存储路径,然后使用`...

Global site tag (gtag.js) - Google Analytics