如何在多个Activity中共享数据?Android中有Application变量吗?听起来象是在说Asp(Asp也有所谓的Application变量)。
如果你想在多个Activity之间共享一组电话号码,你可以用xml资源文件,也可以用SharedPreferences。
但Application变量其实不仅仅是变量,他其实是对象,也就是说可以在应用程序的多个Activity间共用代码(方法)。
例如,我有一个获取本机号码的方法,想让所有的类中都能方便地调用它。你也许会说,创建一个工具类好了。没错,我准备把它封装在单独的类里。
但仅仅这样还不够。因为普通的类你怎么获得一个Context?Android SDK中有大量方便的方法,都需要Context来调用,比如getSystemService方法(这个例子里面就要用到),又比如getSharedPreferences方法,经常用来获取应用程序共享数据,又比如getString方法,我们用来读取xml资源中定义的字符串,等等。
我们平时使用Context的时候很方便,那是因为Activity已经为我们准备好了。
而作为工具类,通常不需要界面,因此它不可能继承自Activity。
你又会说,我们可以通过方法参数传递一个Context进去。就目前为止,我们所知道的Context只有Activity和它的子类。但调用我们的工具类的很可能根本不是一个Activity子类,它又怎么获得一个Context来传递给参数呢?同样问题又出现了,我们依然没有解决它。
那么我们就束手待毙了吗?
我们没有其他更多的选择,只能使用Application变量。
1、AndroidManifest.xml
又是AndroidManifest.xml。这东东可以说是太重要了,我们随时都需要用到它。
首先,在<application>标签中申明属性:
android:name="ydtf.pm.Utils"
我们定义了一个Application变量ydtf.pm.Utils。说是变量,其实更象是一个类名。没错,它就是我们接下来要实现的工具类。
说它是变量,是因为这样声明了之后Utils类会获得一个本应用程序的Context引用。
这有点象Spring IoC(依赖注入)?或者是AOP(象AOP一样给Utils对象增加一个属性)?
我不知道怎么形容它,反正你看接下来的代码就知道了。
2、Utils.java
publicclassUtilsextendsApplication {
privatestaticUtilsinstance;
privateSharedPreferencessettings;
privateContextctx;
publicstaticUtils getInstance(){
returninstance;
}
@Override
publicvoidonCreate() {
//TODOAuto-generated method stub
super.onCreate();
instance=this;
ctx=this.getBaseContext();
}
//获取sim卡手机号<uses-permission android:name="android.permission.READ_PHONE_STATE" />
publicString getLocalTelNo(){
//取得手机服务
TelephonyManager tm = (TelephonyManager)ctx.getSystemService(Context.TELEPHONY_SERVICE);
returntm.getLine1Number();
}
}
代码很简单的,只需要注意那么几点。
1、继承Application
既然是Application变量,当然要继承自Application,因为<application>标签规定android:name属性中的东西必须是Application子类。此外,Application象Activity一样,提供了获得“免费”Context的方法getBaseContext()。
2、覆盖onCreate()方法
onCreate()方法实际上是Application的初始化方法,当构造方法被调用之后接着被调用。因此我们需要在这里获得必要的东西,比如Context。于是:
ctx=this.getBaseContext();
3、使用Context
这样在接下来的实例方法中,我们就有“免费”的Context使用了,就如getLocalTelNo所做的:
ctx.getSystemService(Context.TELEPHONY_SERVICE);
4、在其他的类中使用Utils:
跟一般的类一样使用它:String number=Utils.getInstance().getLocalTelNo();
分享到:
相关推荐
虽然描述中反复提到“学习资料”,但没有提供具体细节,我们可以通过一般性的知识来探讨application变量的使用。 1. **基础概念**: "Application"变量通常在服务器端编程中出现,如ASP.NET或Java Servlets,它...
本篇文章将深入探讨如何使用`Application`作为全局变量,并结合`Intent`和`Activity`来传递数据。 首先,`Application`类是所有`Activity`的基类,它的生命周期始于应用程序启动,结束于应用程序退出。因此,如果你...
然而,在某些场景下,我们需要一种更简单且全局的方式来管理这些数据,这时候就可以考虑使用`Application`类来实现全局变量。 #### 1. Application 类简介 `Application`是Android四大组件之一,它代表了应用程序...
使用 Application 变量也可以实现页面间的传值,Application 变量是全局性的,所有用户共享一个 Application 变量,一旦定义,它将影响到程序的所有部分。如果想在整个应用程序范围使用某个变量值 Application 对象...
例如,网站访问的计数器变量一般采用 Application 变量,多个请求访问时共享这一个变量,均可对它进行操作,该变量可以被整个应用程序的各个页面直接使用。用户登陆的帐号名一般采用 Session 变量,多个请求访问时有...
1. 使用单例模式:创建一个单例类来保存全局变量,这样即使Application被回收,单例中的数据仍然可以保持。单例类应设计为静态内部类,以确保只有在首次使用时才会初始化。 2. 使用SharedPreferences:对于不需要...
本文将详细介绍几种常用的网页间数据传递方法,包括使用URL参数、Cookies、Session变量、Application变量以及`Server.Transfer`方法等,并给出具体的应用实例。 #### 一、URL参数 URL参数是一种最常见的网页间数据...
ASP.NET 聊天室使用 Application 全局变量实现功能 ASP.NET 中的 Application 对象是一个全局变量,可以存储应用程序中的数据,生命周期与应用程序相同。在本文中,我们将使用 Application 对象来实现一个简单的...
Android用Application设置全局变量以及使用 如果想在整个应用中使用全局变量,在java中一般是使用静态变量,public类型;而在android中如果使用这样的全局变量就不符合Android的框架架构,但是可以使用一种更优雅...
通常,Android应用默认会使用`android.app.Application`,但为了实现特定功能或存储全局变量,我们可能会选择创建自定义的`Application`子类。在`CustomApplication`这个例子中,我们需要创建一个名为`Custom...
### ASP页面间信息传递 在ASP(Active Server Pages)开发中,页面间的通信与数据传递是构建动态网站...而对于全局性的数据共享,则可以使用Application变量。综合运用这些技术,能够有效地实现ASP页面间的信息传递。
静态变量与非静态变量获取配置文件application中变量值的区别 在 SpringBoot 应用程序中,经常会遇到获取配置文件中的变量值,并将其赋值给变量的情况。在这种情况下,静态变量和非静态变量的使用会出现一些问题。...
使用Application变量时需要特别注意,因为它会影响到所有的用户,所以在设置时要谨慎。 #### 五、Cookie Cookie可以将数据保存在客户端的浏览器中,通常用于保存用户的一些个性化设置等。 **设置Cookie**: ```...
5. **使用Application变量**: Application变量全局共享,所有用户都能访问。`Application["key"] = value`用于存储,`value = Application["key"]`用于读取。Application适用于全应用范围的数据共享,但数据易丢失...
下面将详细介绍`application`的使用方法及其在实际开发中的应用场景。 首先,`application`作用域的生命周期是从服务器启动到服务器关闭,这使得它成为存储全局变量的理想选择。与`session`不同,`session`是针对...
在这个教程中,我们将学习如何使用`yml`配置文件为静态变量赋值,特别是针对像数据查询引擎连接工具类这样的场景。 首先,我们需要在`yml`配置文件中定义所需的参数。以`clickhouse`为例,我们会在`application.yml...
学习如何正确管理和使用Application变量。 7. **数据库连接与操作**:ASP可以连接到各种数据库,如Access、SQL Server等,使用ADODB组件进行数据操作。理解Connection对象、Command对象以及Recordset对象的用法。 ...
在Android系统中,每个应用程序都默认关联一个`Application`类,它是程序的全局上下文,负责初始化全局变量、设置全局配置等。然而,在某些特定情况下,我们可能需要创建多个`Application`来处理不同的任务或者使用...
这暗示用户在使用SPiiPlus MMI Application Studio软件时,能够获得对编码器补偿问题的处理方法,这是在高精度运动控制应用中非常关键的技术问题。 5. 用户手册的版权声明 文档中的版权声明表明,ACSMotionControl ...