gpt4 book ai didi

android - 多个 Android 应用程序可以共享一个进程和应用程序上下文吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:55:29 24 4
gpt4 key购买 nike

我想知道我是否可以跨多个应用程序在应用程序上下文中共享一个单例?每个应用程序都在其自己的 APK 中,但这听起来像是糟糕的架构,但请先听我说完。

我想这样做的原因是因为我有一个现有的库可以通过蓝牙控制外部设备。该库是 java,但在幕后有全部由 java 包装的 native (c/c++)。我已经考虑过将这一切都放在一个服务中,但是 IPC(我使用的是 aidl)很快变得非常麻烦。试图将对象简化为基元几乎是不可能的(私有(private)字段、jni 指针等)并且试图用 AIDL 包装所有东西是非常困惑的。

如果每个应用程序都可以在相同的进程中运行并且也具有相同的应用程序上下文,那么允许我在那里保留一个单例对象,这将使事情变得容易得多。我的 googl-fu 在这方面让我失望了。也许这不可能?

最佳答案

这应该是可能的,但您会遇到问题,因为您仍在运行两个不同的 APK,每个 APK 都有自己的 ClassLoader。由于不同的 ClassLoader 加载的同一个 Class 被认为是完全不同的,因此您不能从 APK A 创建一个 Class 并期望 APK B 能够访问同一个 Class。 但是,一个漏洞就是同一个进程中的Androidsystem类总是被同一个ClassLoader加载,所以解决办法就是通过Androidsystem<存储你的数据/strong> 类(例如 System.set/getProperty)。您可以阅读有关此技术的优秀文章 here .

由于您希望存储比 Java 原语更复杂的数据,并且考虑到上述方法会严重限制您可以存储的数据结构,因此 AIDL 可能仍然是您的最佳选择。但是,如果您将两个 APK 放在同一个进程中,至少您的数据不需要跨越进程边界,因此它应该相当高效。

关于android - 多个 Android 应用程序可以共享一个进程和应用程序上下文吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17664090/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com