扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
可以将变量存放在Application中,Context,中文直译为“上下文”,SDK中对其说明如下:
为企业提供成都网站设计、做网站、网站优化、成都营销网站建设、竞价托管、品牌运营等营销获客服务。成都创新互联拥有网络营销运营团队,以丰富的互联网营销经验助力企业精准获客,真正落地解决中小企业营销获客难题,做到“让获客更简单”。自创立至今,成功用技术实力解决了企业“网站建设、网络品牌塑造、网络营销”三大难题,同时降低了营销成本,提高了有效客户转化率,获得了众多企业客户的高度认可!
Interface to global information about an application environment. This is an abstract class whose implementation
is provided by the Android system. It allows access to application-specific resources and classes, as well as up-calls
for application-level operations such as launching activities, broadcasting and receiving intents, etc。
从上可知一下三点即:
1、它描述的是一个应用程序环境的信息,即上下文。
2、该类是一个抽象(abstract class)类,Android提供了该抽象类的具体实现类(后面我们会讲到是ContextIml类)。
3、通过它我们可以获取应用程序的资源和类,也包括一些应用级别操作,例如:启动一个Activity,发送广播,接受Intent信息等。
以下为使用Application存储全局变量的示例代码:
1.继承Application,并在Application里声明全局变量。
public class MyApplication extends Application {
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
2.在AndroidManifest.xml的application节点中声明这个Application。
application android:name="com.xxx.xxx.MyApplication"
3.在Activity中获取Application对象,并存取全局变量。
User user = new User();
user.setUserName("example");
MyrApplication app= (MyApplication ) getApplicationContext();
app.setUser(user); //将变量存到application
User tmp = app.getUser();//从application中读取全局变量。
Android提供了一个类似于ServletContext的全局变量,叫Application。可以利用它存储一些全局变量!
示例:
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import android.app.Application;
public class MyApplication extends Application {
private MapString, Object mData;
public MapString, Object getmData() {
return mData;
}
@Override
public void onCreate() {
super.onCreate();
mData = new HashMapString, Object();
//synchronized the map
mData = Collections.synchronizedMap(mData);
// then restore your map
}
public void onTerminate() {
super.onTerminate();
//save data of the map
}
}
然后在AndroidManifest里面配置application节点的属性
application android:name=".MyApplication"
static修饰的静态变量,使用很方便,在不同的类和包中都可以使用,在虚拟机中单独占用内存,没错,这些都是它们的优点,不过在项目上线后,才发现static有一些不太好的地方。
在查看项目的崩溃信息时,发现很多地方莫明的出现空指针异常的错误,经过排查,发现可能就是static的问题。我们在项目中,将用户的信息也就是User对象保存成了一个静态变量,而在报错的地方,也都发现有使用过这种变量,因此,可以大致推断出与这种保存的方式有一定的联系。同时,有不少用户反映在打开应用的情况下,接个电话或者长时间待机后,再回到应用也会出现崩溃的现象,而这些崩溃都与静态变量的空指针有关系。
如此来说的话,static静态修饰在Android的开发中是不是很危险?或许我们可以说如果是static User u = new User();这样定义的话,那么应该不会有太大问题,而如果是static User u;这样定义的话,那么很可以会出现NULL的现象。当然,前面的方法里面的属性也可能会现空的情况,但是这个可以用封装来避免空指针。另外静态常量还是很好用的。
为方便在不同module中设置版本号等配置信息,可以通过配置全局变量来统一所有module的公共配置信息。
设置方法一般分为两种:
一、独立文件配置
1.1.在项目的根目录下新建config.gradle文件
1.2.将gradle中的公共信息写入config.gradle文件中:
1.3.在主项目的build.gradle中申明一下:
1.4.在项目中引用我们的路径配置。如下图:
二、在gradle.properties或者local.properties文件中配置
如下为签名配置:
看了觉得也还挺方便的,但是!需要注意的是:因为用到的都是String变量,当需要到Integer变量时,就麻烦点了:
需要用Integer.parseInt();方法对String类型进行转换!
千锋扣丁学堂Android开发为您解答:
1、使用application来保存全局变量
这里没有太多理论性的东西,无非就是一些实际操作。
1.1定义Data类继承Application Data.class
1.2在manifest.xml中声明application
1.3创建两个Activity
MainActivity.class、secondActivity.class
2、使用普通的类Data.class来保存全局变量
1.1 定义Data.class
1.2创建两个Activity
MainActivity.class、secondActivity.class
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流