【Android 开发】: Android 消息处理机制之三: Handler 中 sendMessage() 源代码剖析

本文深入探讨Android消息处理机制,重点分析Handler的sendMessage()的四种重载方法,包括sendEmptyMessage()、sendEmptyMessageAtTime()、sendEmptyMessageDelayed()和sendMessage()。通过源码解析,揭示它们如何将消息放入消息队列,以及Android为何使用SystemClock.uptimeMillis()作为时间基准。此外,提供了一个Demo帮助理解这些方法的实际应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  阅读此文,请先阅读以下相关连接:

  1. Android 消息处理机制之一: Handler与Message
  2. Android 消息处理机制之二: Message中obtain()源代码剖析

  在前面的两件中我们学习了Handler和Message的基本使用方法[Android消息处理机制之Handler与Message],还有Message中obtain()的几种重载方法的使用方式的不同[Android消息处理机制 Message中 btain()源代码剖析],这一讲我们来学习一下Handler中的sendMessage()的几种重载方法的使用方式的不同以及它们的源代码的剖析.

  通过前面几讲的内容,我们知道Android不但可以使用异步任务处理多线程的问题,还可以通过Handler + Message + Thread 的方式进行,例如更新主线程UI等.整个架构图如下所示:


  下面我就通过一个Demo来学习一下Handler中sendMessage()方法的几种重载方法,以及跟踪它们的源代码来知道它们之间的关系。

1. 使用Handler中的sendEmptyMessage(int what)方式来发送消息.

点击按钮发送消息,在Handler中做消息的处理。只发送一个带有what属性的消息

            case R.id.button1:
                new Thread(new Runnable() {
                    // 查看Handler的api,它有几种sendMessage()的方式
                    @Override
                    public void run() {
                        // 使用public final boolean sendEmptyMessage (int what)
                        mHandler.sendEmptyMessage(3);
                    }
                }).start();
                break;
在Handler中将消息取出打印在控制台中

    // Handler 可以接受或者发送消息,从消息队列中提取消息,用户更新UI的操作
    protected static Handler mHandler = new Handler() {
        @Override
        public void handleMessage(android.os.Message msg) {
            System.out.println("--> what: " + msg.what);
        }
    };
[分析源代码]:

### GPT-4o 文生图 API 调用支持情况 目前关于 GPT-4o 是否支持文生图功能,官方文档并未明确提及具体细节。然而,在已知的信息中可以推测其可能性。 根据已有资料,GPT-4o 是一种强大的多模态模型[^4],能够处理多种类型的输入数据,包括但不限于文字和图像。如果该模型具备生成图片的能力,则可以通过特定接口实现文生图的功能。但是需要注意的是,实际操作过程中可能涉及额外配置或者专用端点来触发此类行为。 对于 Android 平台上的应用开发而言,有实例展示了如何利用 OkHttp 库与 GPT-4o API 结合以上传文件并接收返回结果[^3]。尽管此案例主要集中在图文混合处理方面,但它间接证明了通过编程方式访问这些高级特性是可行的。因此,假设存在针对文生图优化过的 RESTful 接口定义的话,开发者只需按照相应规范发送请求即可获得预期效果。 不过值得注意的一点在于成本考量上——鉴于 GPT-4 相较于 ChatGPT API 显著更高的价格差异[^1],企业在规划项目预算时需充分权衡收益与支出之间的关系。 以下是基于上述理论构建的一个简单 Python 请求模板作为参考: ```python import requests def generate_image(prompt, api_key): url = "https://models.inference.ai.azure.com" headers = { 'Authorization': f'Bearer {api_key}', 'Content-Type': 'application/json' } payload = { "model": "gpt-4o", "prompt": prompt, "task": "text-to-image", # Hypothetical task identifier for text-to-image generation. } response = requests.post(f"{url}/generate", json=payload, headers=headers) if response.status_code == 200: image_url = response.json().get('image_url') return image_url else: raise Exception(f"Request failed with status code {response.status_code}: {response.text}") # Example usage try: generated_image_url = generate_image("A beautiful sunset over the ocean.", "<your_api_key>") print(generated_image_url) except Exception as e: print(e) ``` 请注意以上代码仅为示意目的编写而成;真实环境中应当依据官方提供的最新 SDK 或指南调整参数设置等内容。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值