You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中如何让两个类共用同一个HashMap无需重复创建

解决方案

以下是适配Android Activity场景的可落地方案:

方案1:使用自定义全局Application持有共享实例

Android应用生命周期内只会存在一个Application实例,天然支持全局数据共享,是平台原生推荐的全局数据存储方式。

  • 第一步:创建自定义Application类,声明并暴露HashMap实例
public class MyApp extends Application {
    // 全局共享的HashMap实例
    private HashMap<String, String> testMap = new HashMap<>();

    public HashMap<String, String> getTestMap() {
        return testMap;
    }
}
  • 第二步:在AndroidManifest.xml的application标签中注册自定义Application
<application
    android:name=".MyApp"
    ...其余原有配置保持不变...>
    ...原有Activity注册内容...
</application>
  • 第三步:在两个Activity中访问同一个HashMap实例
    第一个Activity中写入name:
    // 获取全局Application实例后强转为自定义的MyApp类型
    MyApp myApp = (MyApp) getApplication();
    myApp.getTestMap().put("name", name);
    
    第二个Activity中写入surname:
    MyApp myApp = (MyApp) getApplication();
    myApp.getTestMap().put("surname", surname);
    
    最终上传数据时直接从myApp.getTestMap()获取完整集合即可。

方案2:创建独立的单例数据持有类

该方案和Application方案原理一致,优势是解耦全局数据和Application逻辑,更易维护扩展。

  • 第一步:创建单例类持有HashMap
public class DataHolder {
    // 饿汉式单例初始化
    private static final DataHolder INSTANCE = new DataHolder();
    private HashMap<String, String> testMap = new HashMap<>();

    // 私有构造禁止外部实例化
    private DataHolder() {}

    public static DataHolder getInstance() {
        return INSTANCE;
    }

    public HashMap<String, String> getTestMap() {
        return testMap;
    }
}
  • 第二步:任意位置直接访问单例中的HashMap
    第一个Activity写入:
    DataHolder.getInstance().getTestMap().put("name", name);
    
    第二个Activity写入:
    DataHolder.getInstance().getTestMap().put("surname", surname);
    

注意事项

  • 不要通过Intent传递HashMap来实现共享:Android会对Intent携带的序列化对象做拷贝,会生成新的HashMap实例,无法实现数据共通。
  • 如果存在多线程同时操作HashMap的场景,建议替换为ConcurrentHashMap避免并发异常。
  • 全局存储的HashMap在应用进程被杀时会丢失数据,如果需要确保数据不丢失,可以在每次写入后同步缓存到SharedPreferences、本地数据库等持久化存储,最终上传时再读取合并。
  • 如果HashMap不需要长期持有,上传完成后及时调用clear()清空数据,避免不必要的内存占用。

内容的提问来源于stack exchange,提问作者Jack Stuart

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 02:48:02