Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 单件通过几个过程?_Java_Android - Fatal编程技术网

Java 单件通过几个过程?

Java 单件通过几个过程?,java,android,Java,Android,如何编写singleton来处理多个进程?可能吗? 例如,我有在Android中使用远程服务的代码。我如何为此编写singleton public enum MySingleton { SOLE; //all class stuff } 这是一个简单编写、懒惰且线程安全的单例。您可以直接使用MySingleton.SOLE,也可以将其放在其他变量中,但它们都只是对一个实例的引用。你可以在你想要的任何过程中使用它,它将经受住所有过程。(Android中的进程实际上是线程) 这不是我的

如何编写singleton来处理多个进程?可能吗? 例如,我有在Android中使用远程服务的代码。我如何为此编写singleton

public enum MySingleton {
   SOLE;
   //all class stuff
}
这是一个简单编写、懒惰且线程安全的单例。您可以直接使用
MySingleton.SOLE
,也可以将其放在其他变量中,但它们都只是对一个实例的引用。你可以在你想要的任何过程中使用它,它将经受住所有过程。(Android中的进程实际上是线程)

这不是我的主意,这是我的主意

至于全球数据使用(请把这一要求放在问题中),您可以从任何地方访问
MySingleton.SOLE
。静态常数是全局的。当然,名字会是你的

当然,任何事情都有其解决办法。你可以通过类加载来愚弄这个单身汉

如果您真的想为多个不同的任务使用一个实例,而不是线程,那么简单的解决方案将是作为Hybernate或其他ORM对象的单例构建。所有进程将在同一个表中看到具有相同数据的同一行。但我认为这对你的任务来说太过分了

这是一个简单编写、懒惰且线程安全的单例。您可以直接使用
MySingleton.SOLE
,也可以将其放在其他变量中,但它们都只是对一个实例的引用。你可以在你想要的任何过程中使用它,它将经受住所有过程。(Android中的进程实际上是线程)

这不是我的主意,这是我的主意

至于全球数据使用(请把这一要求放在问题中),您可以从任何地方访问
MySingleton.SOLE
。静态常数是全局的。当然,名字会是你的

当然,任何事情都有其解决办法。你可以通过类加载来愚弄这个单身汉


如果您真的想为多个不同的任务使用一个实例,而不是线程,那么简单的解决方案将是作为Hybernate或其他ORM对象的单例构建。所有进程将在同一个表中看到具有相同数据的同一行。但我认为这是对您的任务的过度使用。

您创建的远程服务将始终是单例的。您需要有一个接口来使用Android接口定义语言在进程之间进行通信

看这个例子

您创建的远程服务将始终是单例的。您需要有一个接口来使用Android接口定义语言在进程之间进行通信

看这个例子

这条线索很旧,但目前公认的答案是错误的,误导了一些人,所以我们开始吧

Android中的服务可能与你的应用程序运行在同一个进程上,或者完全不同的进程

如果这是由您自己的应用程序为其内部使用而定义的服务,那么它可能正在同一进程上运行。只是不要设置任何
过程
。在这种情况下,您的服务将在主线程或某些后台线程上运行其任务,并将与应用程序的其余部分共享同一个singleton实例

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


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

这条线索已经过时了,但目前公认的答案是错误的,误导了一些人,所以我们开始吧

Android中的服务可能与你的应用程序运行在同一个进程上,或者完全不同的进程

如果这是由您自己的应用程序为其内部使用而定义的服务,那么它可能正在同一进程上运行。只是不要设置任何
过程
。在这种情况下,您的服务将在主线程或某些后台线程上运行其任务,并将与应用程序的其余部分共享同一个singleton实例

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


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

没有正确理解你的问题。有可能在Android中为几个进程编写单例课程吗?但我只需要一个单身学生。有可能吗?我有一个单身学生班。在我的应用程序中,我调用了它的几个方法来存储一些全局信息,然后在我的应用程序中,从远程服务(在单独的过程中)调用了几个方法来获取早期存储的信息,但我得到了一个新的单例实例,其中包含空数据字段。你所说的过程是什么意思?构建一个单例是相当简单的——Gangnus的回答显示了一种方法——但不一定是最常见的方法。单例的作用域通常由其类加载器决定,因此,如果“进程”实际上指的是JVM实例,那么实现它就要困难得多。没有正确回答您的问题。是否可以在Android中为多个进程编写单例类?但我只需要一个单身学生。有可能吗?我有一个单身学生班。在我的应用程序中,我调用了几种it方法来存储一些全局信息,然后在