Message.obtain()
时间: 2023-10-27 12:58:55 浏览: 51
`Message.obtain()` 是一个静态方法,用于获取一个空闲的 `Message` 对象,以便在 Android 应用程序中进行消息传递。在 Android 应用程序中,通常会使用消息传递机制来实现不同组件之间的通信,例如在主线程和工作线程之间传递消息,或者在不同的 Activity 之间传递消息。
`Message.obtain()` 方法可以避免频繁地创建和销毁 `Message` 对象,从而提高应用程序的性能。它会从一个消息池中获取一个空闲的 `Message` 对象,如果池中没有可用的对象,则会创建一个新的对象。
使用 `Message.obtain()` 方法获取 `Message` 对象后,可以通过设置 `what`、`obj`、`arg1` 等属性来设置消息的内容,然后将该消息发送到目标 `Handler` 中,从而实现消息传递。
相关问题
Message message = Message.obtain();
### 回答1:
这段代码是在 Android 开发中使用的,它的作用是获取一个 Message 对象。Message 是 Android 系统中用来在不同线程之间传递消息的一种机制,通过 Message.obtain() 方法可以获取一个空闲的 Message 对象,然后在需要传递消息时,可以将消息内容设置到 Message 中,再通过 Handler 发送到目标线程中进行处理。这样就可以实现不同线程之间的通信和协作。
### 回答2:
"Message.obtain()" 是一个用于创建或获取 Message 对象的静态方法。
它的作用是从 Message 池中获取可复用的 Message 对象。在 Android 系统中,为了减少内存的分配和回收负担,Message 对象采用了对象池的方式进行管理。当我们需要创建一个新的 Message 对象时,可以通过调用 Message.obtain() 方法来获取,而不是使用 new Message() 来实例化。这样做的好处是可以提高性能和节省内存。
使用 Message.obtain() 方法创建的 Message 对象可以通过设置其成员变量的值来传递消息和数据。例如,可以通过调用 message.what = 1 来设置 Message 对象的 what 字段为 1,表示这条消息的标识。还可以通过 message.obj = "Hello" 来设置 Message 对象的 obj 字段为 "Hello",表示这条消息的数据为字符串 "Hello"。
当我们使用完一个 Message 对象后,可以通过调用其 recycle() 方法来将其回收到 Message 池中,以供下次复用。这样可以减少系统内存的占用和垃圾回收的开销。
总而言之,Message.obtain() 是一个非常常用的方法,用于创建或获取 Message 对象。通过使用它,我们可以有效地管理消息对象,提高性能和节省内存。
### 回答3:
"Message.obtain()"是Android中的一个方法,用于获取一个空的Message对象。在Android开发中,Message对象用于在不同的组件之间传递信息。
使用"Message.obtain()"可以获取一个空的Message对象,然后可以对该对象进行设置和操作。通常,我们可以使用该方法来获取一个可重用的Message对象,以提高效率和性能。
通过"Message.obtain()"获取的空的Message对象可以用于发送消息、处理异步任务、更新UI等操作。我们可以通过设置Message内的字段来传递信息,比如可以设置Message的what字段来表示不同的消息类型,设置arg1和arg2字段来传递整数型数据,设置obj字段来传递任意类型的对象等。
例如,我们可以使用以下代码来获取一个空的Message对象并设置其what字段和obj字段:
Message message = Message.obtain();
message.what = 1; // 设置消息类型为1
message.obj = "Hello World!"; // 设置传递的字符串对象
通过获取到的Message对象,我们可以将其传递给Handler对象的sendMessage()方法,或者使用Handler对象的obtainMessage()方法获取一个可重用的Message对象。
总之,"Message.obtain()"是Android中用于获取空的Message对象的方法,通过设置Message内的字段来传递信息。在Android开发中,这个方法非常常用,可用于实现异步通信、更新UI等功能。
@Override public void onCompletion(MediaPlayer player) { index++; if(index>=MainActivity.list.size())index=0; Play(); Message mm=Message.obtain(); mm.what=200; mm.arg1=index; MainActivity.hh.sendMessage(mm); }这段代码是什么意思
这段代码是 Java 代码,是一个 `onCompletion` 方法的实现。
`@Override` 是一个 Java 注解,表示这个方法是重写父类的方法。
`public void onCompletion(MediaPlayer player)` 定义了这个方法的访问权限是 `public`(公共的,对所有类可见),返回值是 `void`(无返回值),方法名是 `onCompletion`,参数是一个 `MediaPlayer` 类型的对象 `player`。
方法体中的代码会在 `MediaPlayer` 播放完毕时执行。
首先,定义一个变量 `index`。
然后,判断 `index` 是否大于等于 `MainActivity.list` 的大小,如果是,就将 `index` 赋值为 0。
接着,调用 `Play` 方法。
最后,创建一个 `Message` 对象 `mm`,设置它的属性 `what` 为 200,`arg1` 为 `index`,并将 `mm` 发送给 `MainActivity.hh`。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)