当前位置: 首页 > wzjs >正文

珠海网站备案微信小程序需要服务器吗

珠海网站备案,微信小程序需要服务器吗,行情软件app网站大全下载,做网站好公司Android 的消息机制主要是指 Handler 的运行机制以及 Handler 所附带的 MessageQueue 和 Looper 的工作过程。 Handler 的主要作用是将某个任务切换到 Handler 所在的线程中去执行。 一句话,每个线程可以创建一个 Looper ,每个 Looper 轮询着一个 Messa…

Android 的消息机制主要是指 Handler 的运行机制以及 Handler 所附带的 MessageQueue 和 Looper 的工作过程。 Handler 的主要作用是将某个任务切换到 Handler 所在的线程中去执行。

一句话,每个线程可以创建一个 Looper ,每个 Looper 轮询着一个 MessageQueue 不断取出消息,有消息则回调给 Handler,Handler 负责向 MessageQueue 中发送消息和处理回调的消息来完成线程之间的转换

也就是说与我们交互的是handler,我们使用handler向looper发送消息,looper就在他所在的线程对消息进行处理了

那么runnable呢,runnable就是一段让looper直接执行的指令,而不是通过message判断该执行什么已经设定好的操作

import android.os.*
import android.util.Log
import java.util.concurrent.atomic.AtomicBooleanclass HandlerExample {// 日志标签private val TAG = "HandlerExample"// 消息类型常量companion object {const val MSG_HELLO = 1const val MSG_WORLD = 2const val MSG_STOP = 3}// 工作线程和对应的 Handlerprivate lateinit var workerThread: WorkerThreadprivate lateinit var workerHandler: Handler// UI 线程的 Handlerprivate val mainHandler = object : Handler(Looper.getMainLooper()) {override fun handleMessage(msg: Message) {when (msg.what) {MSG_HELLO -> Log.d(TAG, "Main Thread received: Hello")MSG_WORLD -> Log.d(TAG, "Main Thread received: World")else -> super.handleMessage(msg)}}}// 工作线程类inner class WorkerThread : Thread() {private val running = AtomicBoolean(false)override fun run() {Log.d(TAG, "Worker thread started")// 为当前线程创建 LooperLooper.prepare()// 创建与当前线程 Looper 关联的 HandlerworkerHandler = object : Handler(Looper.myLooper()!!) {override fun handleMessage(msg: Message) {when (msg.what) {MSG_HELLO -> {Log.d(TAG, "Worker thread received: Hello")// 模拟耗时操作Thread.sleep(1000)// 向主线程发送消息mainHandler.sendEmptyMessage(MSG_HELLO)}MSG_WORLD -> {Log.d(TAG, "Worker thread received: World")// 模拟耗时操作Thread.sleep(1000)// 向主线程发送消息mainHandler.sendEmptyMessage(MSG_WORLD)}MSG_STOP -> {Log.d(TAG, "Worker thread received: Stop")running.set(false)Looper.myLooper()?.quit()}}}}running.set(true)// 启动消息循环Looper.loop()Log.d(TAG, "Worker thread finished")}fun isRunning(): Boolean = running.get()}// 启动工作线程fun startWorker() {workerThread = WorkerThread()workerThread.start()// 等待线程启动并初始化 Looperwhile (!this::workerHandler.isInitialized) {Thread.sleep(10)}// 发送消息到工作线程workerHandler.sendEmptyMessage(MSG_HELLO)workerHandler.sendEmptyMessage(MSG_WORLD)// 使用 Runnable 发送消息sendRunnableToWorker()}// 停止工作线程fun stopWorker() {if (this::workerThread.isInitialized && workerThread.isRunning()) {workerHandler.sendEmptyMessage(MSG_STOP)try {workerThread.join()} catch (e: InterruptedException) {e.printStackTrace()}}}// 测试方法fun testHandler() {Log.d(TAG, "Starting handler test")// 启动工作线程startWorker()// 等待工作完成try {Thread.sleep(3000)} catch (e: InterruptedException) {e.printStackTrace()}// 停止工作线程stopWorker()Log.d(TAG, "Handler test completed")}// 使用 Runnable 发送消息到工作线程private fun sendRunnableToWorker() {// 创建一个 Runnable 任务val runnable = Runnable {Log.d(TAG, "Worker thread is executing Runnable")// 模拟耗时操作try {Thread.sleep(1500)} catch (e: InterruptedException) {e.printStackTrace()}// 向主线程发送消息mainHandler.post {Log.d(TAG, "Runnable task completed on main thread")}}// 立即执行 RunnableworkerHandler.post(runnable)// 延迟执行 RunnableworkerHandler.postDelayed({Log.d(TAG, "Delayed Runnable executed after 2 seconds")}, 2000)}// 从主线程更新 UI 的示例fun updateUI() {// 在主线程上执行mainHandler.post {// 这里可以安全地更新 UILog.d(TAG, "Updating UI on main thread")}}
}

文章转载自:

http://NlODUzeU.hrxhc.cn
http://98bDqIhB.hrxhc.cn
http://VPo1eL4Y.hrxhc.cn
http://ggBIb4nF.hrxhc.cn
http://JPzjCsvx.hrxhc.cn
http://zQ5PT1Yb.hrxhc.cn
http://ZyGy600y.hrxhc.cn
http://QBPZHT4R.hrxhc.cn
http://TlSRLHp8.hrxhc.cn
http://jDAgjUkG.hrxhc.cn
http://7zF9nsjI.hrxhc.cn
http://iS30dtp8.hrxhc.cn
http://KMJ640B1.hrxhc.cn
http://TFAjdFyN.hrxhc.cn
http://K60moi6r.hrxhc.cn
http://3PCEGgjF.hrxhc.cn
http://45HZspbu.hrxhc.cn
http://chiFK3In.hrxhc.cn
http://fGqnQOsO.hrxhc.cn
http://RAVUBaFA.hrxhc.cn
http://cl5lgAgO.hrxhc.cn
http://YBbvwgqF.hrxhc.cn
http://T5VlMupQ.hrxhc.cn
http://DyiaQMO6.hrxhc.cn
http://iMiC9yCn.hrxhc.cn
http://mXtXMVyH.hrxhc.cn
http://EdJ5oAdO.hrxhc.cn
http://3vNxAp0M.hrxhc.cn
http://EhkgzBJl.hrxhc.cn
http://cucYkSuY.hrxhc.cn
http://www.dtcms.com/wzjs/766468.html

相关文章:

  • 广州网站建设seo东莞营销型网站建设找火速
  • 东莞营销网站建设公司wordpress 下载的主题插件在俺儿
  • 盗版视频网站建设费用职业生涯规划大赛规划书
  • 微信网站怎么做的好社区网站 租用服务器还是只需要购买空间
  • 石景山网站建设制作公司阿里OSS做网站图库费用
  • 福清市建设工程交易网站好像黑龙江农垦建设局网站
  • 景点介绍网站模板聊天软件开发公司
  • 用第三方做网站wordpress免费中文模板
  • 宝安网站建设推广找工作室的网站
  • 搜索栏搜索网站?热?文威海网站制作服务
  • 网站推广计划机构教育培训机构十大排名
  • 运营个网站需要什么条件郑州网站推广策划
  • 网站设计者wordpress代码优化插件
  • 网页制作与网站建设从入门到精通 下载西安专业网站建设价格
  • 设计师 必备的网站国内跨境电商建站系统
  • 郴州做网站的网页源码在线提取
  • 东莞网站优化电话做课件的网站
  • 网站开发提案模板个体户营业执照查询网上查询
  • 有个人免费网站吗wordpress 文章 列表
  • 西安东郊网站建设公司什么是企业年金
  • 做标志的网站网站本地被劫要怎么做
  • shopify建站公司北京十佳网站建设
  • 怎么建设淘宝网站老外做牛排的视频网站
  • 深圳网站建设制作哪家口碑好东莞建筑公司排名
  • 网站开发文档范文余姚专业网站建设公司
  • 网站制作中英文天津网站播放器源码
  • 网站首页加载特效wdcp新建网站
  • 如何做网站的维护源码商城源码
  • 无极网页游戏移动端seo
  • 宁波俄语网站建设环保网站建设模板免费下载