Java Android-什么是处理程序消息?

Java Android-什么是处理程序消息?,java,android,multithreading,performance,Java,Android,Multithreading,Performance,我是说 主要文件说明: 定义包含描述和任意数据对象的消息 可以发送给处理程序的。此对象包含两个额外的int 字段和允许您不执行分配的额外对象字段 在许多情况下 所以我认为这是两个人之间的某种交流 不同的线,可能是一捆 主文档中也有一个。但我 看不出它们是如何建造的,它们的结构是什么 为什么要使用它们而不是使用SharedReferences或Singleton类?测试 我很想看到一个关于何时以及如何使用它们的小而紧凑的例子。一个线程只能有一个处理程序和一个messageQueue,消息是由放在其

我是说

主要文件说明:

定义包含描述和任意数据对象的消息 可以发送给处理程序的。此对象包含两个额外的int 字段和允许您不执行分配的额外对象字段 在许多情况下

所以我认为这是两个人之间的某种交流 不同的线,可能是一捆

主文档中也有一个。但我 看不出它们是如何建造的,它们的结构是什么

为什么要使用它们而不是使用SharedReferences或Singleton类?测试


我很想看到一个关于何时以及如何使用它们的小而紧凑的例子。

一个线程只能有一个处理程序和一个messageQueue,消息是由放在其messageQueue上的处理程序处理的一些任意数据,messageQueue循环每条消息并处理它们,直到没有更多的消息,所有数据都是通用的,可以尽快执行,无需将其保存在硬盘上,它是低级代码,您通常不会处理它

一个线程只能有一个处理程序和一个消息队列,消息是由放入其消息队列的处理程序处理的任意数据,messageQueue循环每一条消息并处理它们,直到它没有更多的消息为止,所有数据都是通用的,可以尽快执行,无需将其保存在HDD上,这是一种低级代码,您不会经常处理它

所以我假设这是不同线程之间的某种通信

您可以将处理程序附加到主应用程序线程(又称UI线程),并且可以为其他具有关联处理程序实例的线程创建单独的HandlerThread实例

一个线程可以通过处理程序发送消息,处理程序将在handleMessage方法中自己的线程上处理消息。例如,一个普通的后台线程可以将其工作结果(例如,下载的数据)打包成一条消息,并将其提供给连接到主应用程序线程的处理程序。该处理程序将在主应用程序线程上调用handleMessage中获取消息,然后可以使用后台线程中的数据安全地更新UI

在Android中,这是一种非常低级的线程间通信方式。更常见的情况是,使用稍微高一点的东西,比如事件总线,你会得到更好的服务

为什么要使用它们而不是使用SharedReference

SharedReference用于数据存储,而不是线程间通信

或者是单身班

虽然单例可以提供数据的中心点,但它本身并不提供任何类型的线程间通信

我希望看到一个关于何时以及如何使用它们的小而紧凑的例子

对于99%的Android开发者来说,答案是:不要使用它们。使用构建在处理程序和消息之上的内容,例如:

异步任务 本地广播 奥托广场酒店 绿色机器人事件总线 等 所以我假设这是不同线程之间的某种通信

您可以将处理程序附加到主应用程序线程(又称UI线程),并且可以为其他具有关联处理程序实例的线程创建单独的HandlerThread实例

一个线程可以通过处理程序发送消息,处理程序将在handleMessage方法中自己的线程上处理消息。例如,一个普通的后台线程可以将其工作结果(例如,下载的数据)打包成一条消息,并将其提供给连接到主应用程序线程的处理程序。该处理程序将在主应用程序线程上调用handleMessage中获取消息,然后可以使用后台线程中的数据安全地更新UI

在Android中,这是一种非常低级的线程间通信方式。更常见的情况是,使用稍微高一点的东西,比如事件总线,你会得到更好的服务

为什么要使用它们而不是使用SharedReference

SharedReference用于数据存储,而不是线程间通信

或者是单身班

虽然单例可以提供数据的中心点,但它本身并不提供任何类型的线程间通信

我希望看到一个关于何时以及如何使用它们的小而紧凑的例子

对于99%的Android开发者来说,答案是:不要使用它们。使用构建在处理程序和消息之上的内容,例如:

异步任务 本地广播 奥托广场酒店 绿色机器人事件总线 等
当你学习处理程序时,这也是有意义的,因为消息类就是这样有用的。我也使用过处理程序,我确实知道它们有自己的handleMessage方法,但我还没有真正使用消息的需要。当你学习处理程序时,这也是有意义的,因为这就是Message类的用途,我已经使用过处理程序,我知道它们有自己的handleMessage方法,但我有
还没有必要真正使用短信。谢谢!还有什么问题需要另外1%才能真正使用它?@Evin1:他们是写AsyncTask、LocalBroadcastManager、Otto等东西的人:-谢谢!还有什么问题需要另外1%才能真正使用它?@Evin1\uz:他们是写AsyncTask、LocalBroadcastManager、Otto等东西的人:-