我们Application除了作为入口类初始化一些操作,还可以作为我们全局存储数据的一个容器。这里我们就讲解一下如何用Application来存储我们的数据。
首先我们要明确的一点就是,什么样的数据可以用Application来进行存储。
适合在Application中存储的全局变量主要有下面三类数据:
- 会频繁读取的信息,如用户名、手机号等。
- 从网络上获取的临时数据,为节约流量,减少用户等待时间,想暂时放在内存中供下次使用,如logo,商品图片等。
- 容易因频繁分配内存而导致内存泄漏的对象,如Handler对象等。
那么我们应该如何将变量通过Application存储在内存中?这里提供一个举例供大家参考。
public class MainApplication extends Application {
//声明一个当前应用的静态实例
private static MainApplication mApp;
//声明一个公共的信息映射,可当做全局变量使用
public HashMap<String,String> mInfoMap = new HashMap<>();
public static MainApplication getInstance(){
return mApp;
}
@Override
public void onCreate() {
super.onCreate();
mApp = this;
}
}
这样我们就可以用MainApplication.getInstance().mInfoMap获取到Appliication中的这个HashMap对象,并进行读写其中数据的操作。
这个其实和我在《Android项目初始化和url地址存储的写法》一文中提到的方法如出一辙,不过一个是用了每次只启动一次的Application,一个用了单例模式,殊途同归。大家可以选择适合自己的使用。