《Android入门到精通》第十六章学习笔记总结

📒 博客首页:✎﹏ℳ๓敬坤的博客 🎈
😊 我只是一个代码的搬运工 🎃
🎉 欢迎来访的读者关注、点赞和收藏 🤞
😉有问题可以私信交流 😆
📃 文章标题:《Android入门到精通》第十六章学习笔记总结 🖍

Handler消息传递机制

Handler类的主要两个作用

  1. 在任意线程中发送消息
  2. 在主线程中获取并处理消息

Handler类的常用方法

■ handleMessage(Message msg):处理消息的方法
■ hasMessages(int what):检查消息队列中是否包含what属性为指定值的消息
■ hasMessages(int what, Object object):检查消息UI列中是否包含what属性为指定值且object属性为指定对象的消息
■ post(Runnable r):立即发送Runnable对象,该Runnable对象最后将被封装成Message对象
■ postAtTime(Runnable r, long uptimeMillis):定时发送Runnable对象
■ postDelayed(Runnable r, long delayMillis):延迟发送Runnable对象
■ sendEmpty(int what):发送空消息
■ sendEmptyMessageDelayed(int what, long delayMillis):指定多少毫秒之后发送空消息
■ sendMessage(Message msg):立即发送消息
■ sendMessageAtTime(Message msg, long uptimeMillis):定时发送消息
■ sendMessageDelayed(Message msg, long delayMillis):延迟发送消息
■ obtainMessage():获取消息

Handler与Looper、MessageQueue

  1. Handler与Looper、MessageQueue的关系

■ Handler并不是单独工作的,与Handler共同工作的几个重要主要,包括Message,Looper和MessageQueue

  1. Message与Looper、MessageQueue的作用

■ Message:通过Handler发送、接收和处理的消息对象
■ Looper:负责管理MessageQueue。每个线程只有一个Looper,它的loop()方法负责读取MessageQueue中的消息,读取到消息之后就把消息回传给Handler进行处理
■ MessageQueue:消息队列,可以看做是一个存储消息的容器。它采用FIFO(先进先出)的原则来管理消息

  1. 创建Looper对象的两种创建方式
  1. 在主UI线程中,系统已经初始化了一个Looper对象,因此在程序中可以直接创建Handler,然后就可以通过Handler发送消息、处理消息
  2. 在子线程中,必须手动创建一个Looper对象,并通过loop()方法启动Looper
  1. 在一个线程中,只有一个Looper和MessageQueue,但是可以有多个Handler,而且这些Handler可以共享一个Looper和MessageQueue

消息类(Message)

  1. Message对象的属性
    ■ arg1:用来存放整形数据
    ■ arg2:用来存放整形数据
    ■ obj:用来存放发送给接收器的Object类型的任意对象
    ■ replyTo:用来指定此Message发送到任何处的可选Messenger对象
    ■ what:用来指定用户自定义 的消息代码,这样接受这就可以了解这个消息的信息
  2. 使用Message类时,需要注意以下3点
    ■ 尽管Message有public的默认构造方法,但是通常情况下,需要使用Message.obtain()或Handler.obtainMessage()方法从消息池中获得空消息对象,以节省资源
    ■ 如果一个Message只需要携带简单的int型信息,应优先使用Message.arg1和Message.arg2属性来传递消息,较之用Bundle更节省内存
    ■ 尽可能使用Message.what来标识信息,一边用不同方式处理Message

循环者(Looper)

  1. Looper的作用
    ■ Looper对象用来为一个线程开启一个消息循环,从而操作MessageQueue
  2. Looper类提供的常用方法
    ■ prepare():用于初始化Looper
    ■ loop():启动Looper线程,线程会从消息队列里获取和处理消息
    ■ myLooper():可以获取当前线程的Looper对象
    ■ getThread():用于获取Looper对象所属的线程
    ■ quit():用于结束Looper循环
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
当然可以!以下是一个基本的 Python 学习笔记: # Python从入门精通 ## 基础知识 ### 数据类型 在 Python 中,常见的数据类型包括整数、浮点数、字符串、列表、字典等。我们可以使用 type() 函数查看变量的数据类型,例如: ``` a = 1 print(type(a)) # 输出 <class 'int'> ``` ### 控制流 Python 中的控制流包括 if 语句、for 循环、while 循环等。例如: ``` if x > 5: print("x 大于 5") else: print("x 小于等于 5") ``` ``` for i in range(10): print(i) ``` ``` while i <= 10: print(i) i += 1 ``` ### 函数 定义一个 Python 函数可以使用 def 关键字,例如: ``` def add(a, b): return a + b ``` ## 进阶知识 ### 面向对象编程 Python 是一门面向对象的语言,我们可以使用 class 关键字定义类,例如: ``` class Car: def __init__(self, color, speed): self.color = color self.speed = speed def run(self): print("我正在以{}的速度行驶,颜色为{}".format(self.speed, self.color)) ``` ### 文件读写 Python 通过 open() 函数来读写文件,例如: ``` with open('file.txt', 'w') as f: f.write('Hello, world!') with open('file.txt', 'r') as f: content = f.read() print(content) # 输出 'Hello, world!' ``` ### 异常处理 在写代码时可能会出现各种错误,Python 提供了 try/except 语句来处理这些错误: ``` try: a = 1 / 0 except ZeroDivisionError: print("除数不能为 0") ``` 以上就是 Python 学习笔记的基本内容,希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

✎﹏ℳ๓敬坤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值