单例要经过几个进程?

use*_*896 2 java android

如何编写单例来处理多个进程?是否可以?例如,我有与 Android 中的远程服务一起使用的代码。我如何为此目的编写单例?

xae*_*hos 5

该线程已过时,但当前接受的答案是错误的并误导了一些人,所以我们开始吧。

Android 中的服务可能与您的应用运行在同一进程上,也可能运行在不同的进程上。

如果这是您自己的应用程序定义供内部使用的服务,则它可能在同一进程上运行。只是不要process 在 Manifest 上设置任何属性。在这种情况下,您的服务将在主线程或某些后台线程上运行其任务,并将与应用程序的其余部分共享相同的单例实例。

如果这是在单独的进程或单独的应用程序上运行的真正的远程服务,那么您想要实现的目标就会困难得多。每个进程都有自己的单例实例,并且它们彼此之间没有任何关系。一旦您意识到不同的进程甚至可能没有运行相同版本的代码,这就完全有道理了。

如果您确实希望跨进程拥有一个通用对象(提示:您几乎肯定不会),则需要为其数据创建一个共享内存空间,并实现一些同步方法。我确信大学里有关于这个主题的完整讲座。