android:用application保存全局变量
一,创建application

代码:
package com.example.okdemo1;
import android.app.Application;
import android.content.res.Configuration;
import androidx.annotation.NonNull;
import java.util.HashMap;
public class MainApplication extends Application {
//自身的实例保存
private static MainApplication mApp;
//全局变量保存
public HashMap<String, String> infoMap = new HashMap<String, String>();
//单例模式获取当前应用的唯一实例
public static MainApplication getInstance() {
return mApp;
}
@Override
public void onCreate() {
super.onCreate();
// 在这里执行全局初始化
mApp = this;
}
@Override
/**
* This method is for use in emulated process environments.
* It will never be called on a production Android device, where processes are removed by simply killing them;
* no user code (including this callback) is executed when doing so。
* 注意真机上永远不会被调用
*/
public void onTerminate() {
super.onTerminate();
}
@Override
/**
* 低内存时调用
*/
public void onLowMemory() {
super.onLowMemory();
}
@Override
/**
* 配置改变时调用 如竖屏变横屏
*/
public void onConfigurationChanged(@NonNull Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
}
实际调用:
//给按钮增加点击事件
Button button2 = findViewById(R.id.button2);
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//写入数据
HashMap<String, String> infoMap = MainApplication.getInstance().infoMap;
infoMap.put("name", "王富贵");
infoMap.put("id", "123");
}
});
//给按钮增加点击事件
Button button3 = findViewById(R.id.button3);
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//读取数据
HashMap<String, String> infoMap = MainApplication.getInstance().infoMap;
Log.d("debug","用户名:"+infoMap.get("name"));
Log.d("debug","id:"+infoMap.get("id"));
}
});
二,注册到AndroidManifest.xml
添加一行:
android:name=".MainApplication"
如下
<application
android:name=".MainApplication"
android:allowBackup="true"
三,测试效果:
浙公网安备 33010602011771号