Android数据存储之Application
Application是Android的一大组件,在APP运行过程中有且仅有一个Application对象,它类似于javaweb中的session,贯穿整个生命周期。
Application中适合保存的全局变量主要有一下三类:
(1)会频繁读取的信息,如用户名、手机号等
(2)从网络上获取的临时数据,为节约流量、减少用户的等待时间,想暂时放在内存中供下次使用,如logo、商品图片等
(3)容易因频繁分配内存而导致内存泄漏的对象,如Handler对象等
要想通过Application实现全局内存的读写,需要完成以下3项工作:
(1)写一个继承自Application的类MainApplication,该类要求使用单例模式,内部声明自身类的一个静态成员对象,在创建APP时把自身赋值给这个静态对象,然后提供该静态对象的获取方法getInstance
(2)在activity中调用MainApplication的getInstance方法,获得MainApplication的一个静态对象,通过该对象访问MainApplication的公共变量和公共方法
(3)在AndroidManifest.xml中注册新定义的Application类名,即在application节点中增加android:name属性,值为.MainApplication
下面为MainApplication类的代码框架:
package USER_CLASS; import android.app.Application; import java.util.HashMap; /** * Created by animator on 2020/1/19. */ public class MainApplication extends Application { //声明一个当前应用的静态实例 private static MainApplication mApp; //声明一个公共的信息映射,可当做全局变量使用 public HashMap<String ,String> mInfoMap = new HashMap<String ,String>(); //利用单例模式获取当前应用的唯一实例 public static MainApplication getInstance(){ return mApp; } @Override public void onCreate() { super.onCreate(); //在打开应用时对静态的应用实例赋值 mApp=this; } }
完成以上编码后,Activity页代码可直接通过MainApplication.getInstance().mInfoMap对全局变量进行增删改查。