【问题标题】:Creating a Singleton in a NDK static library在 NDK 静态库中创建单例
【发布时间】:2012-11-05 13:17:43
【问题描述】:

我正在尝试为 android ndk 中的 2 个不同库创建一个单例。

想象一下我有:

  • lib1(静态)
  • lib2(共享)
  • lib3(共享)

lib1 始终定义为 lib2lib3 的 LOCAL_STATIC_LIBRARIES

但是当我在 lib2 上设置单例的值时,这个值在 lib3 上仍然为 NULL。

如何使用这种架构构建单例?

【问题讨论】:

    标签: android android-ndk singleton shared-libraries static-libraries


    【解决方案1】:

    herehere 所讨论的,该问题很常见并且没有好的解决方案。共享库具有链接的静态库的单独副本,包括代码和数据。不同 SO 中的静态库实例只是不交互,而且有很多很好的理由。

    您需要的是一块可供双方访问的内存。您可以将单例提升到 Java 级别(毕竟它在 Android 之下)。您可以拥有一个具有众所周知名称的临时文件。 C 级 TLS 也可能有所帮助。

    Android 的共享内存设施 (ashmem) 将毫无用处,因为它不提供命名块。

    【讨论】:

      猜你喜欢
      • 2023-03-23
      • 2013-02-06
      • 1970-01-01
      • 1970-01-01
      • 2011-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多