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

做企业网站大约多少钱海口网站建设公司哪个好

做企业网站大约多少钱,海口网站建设公司哪个好,太原要做网站的公司,做网站有哪些公司runBlocking简介 runBlocking 是常规函数#xff1b; runBlocking 方法会阻塞当前线程来等待#xff1b; runBlocking 的主线程会一直 阻塞 直到 runBlocking 内部的协程执行完毕。 runBlocking导致App应用出现ANR问题实例的效果 点击页面上的 刷新按钮 调用 refreshByrunBlo…runBlocking简介 runBlocking 是常规函数 runBlocking 方法会阻塞当前线程来等待 runBlocking 的主线程会一直 阻塞 直到 runBlocking 内部的协程执行完毕。 runBlocking导致App应用出现ANR问题实例的效果 点击页面上的 刷新按钮 调用 refreshByrunBlocking方法此方法里模拟了等待30秒耗时操作当点击 刷新按钮 等待3秒左右点击 详情按钮页面出现ANR弹框如下图所示 页面布局activity_test_anr_by_runblocking.xml代码 ?xml version1.0 encodingutf-8? androidx.constraintlayout.widget.ConstraintLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentButtonandroid:idid/btn_refreshandroid:layout_widthmatch_parentandroid:layout_height50dpandroid:layout_marginLeft20dpandroid:layout_marginTop60dpandroid:layout_marginRight20dpandroid:gravitycenterandroid:onClickonClickandroid:text刷新android:textColorcolor/blackandroid:textSize20spapp:layout_constraintEnd_toEndOfparentapp:layout_constraintStart_toStartOfparentapp:layout_constraintTop_toTopOfparent /Buttonandroid:idid/btn_detailandroid:layout_width0dpandroid:layout_height50dpandroid:layout_marginTop60dpandroid:gravitycenterandroid:onClickonClickandroid:text详情android:textColorcolor/blackandroid:textSize20spapp:layout_constraintLeft_toLeftOfid/btn_refreshapp:layout_constraintRight_toRightOfid/btn_refreshapp:layout_constraintTop_toBottomOfid/btn_refresh /TextViewandroid:idid/tv_detailandroid:layout_width0dpandroid:layout_heightwrap_contentandroid:layout_marginTop60dpandroid:onClickonClickandroid:textColorcolor/blackandroid:textSize16spapp:layout_constraintLeft_toLeftOfid/btn_detailapp:layout_constraintRight_toRightOfid/btn_detailapp:layout_constraintTop_toBottomOfid/btn_detailtools:text用户信息 //androidx.constraintlayout.widget.ConstraintLayout实体类PsersonBean.kt代码 data class PsersonBean(val name: String, var moblie: String? null)//至少有一个构造函数TestANRByRunBlockingActivity.kt代码 package example.demo.kotlin.activityimport android.app.Activity import android.os.Bundle import android.view.View import android.widget.TextView import example.demo.kotlin.R import example.demo.kotlin.bean.PsersonBean import example.demo.kotlin.utils.LogUtil import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.async import kotlinx.coroutines.delay import kotlinx.coroutines.launch import kotlinx.coroutines.runBlockingclass TestANRByRunBlockingActivity : Activity() {private lateinit var tv_detail: TextViewprivate var psersonBean: PsersonBeaninit {psersonBean PsersonBean(测试用户01)}override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_test_anr_by_runblocking)initView()}override fun onStart() {super.onStart()showData()}fun initView() {tv_detail findViewById(R.id.tv_detail)}fun showData() {//使用lateinit var 延时初始化这里安全起见判断是否 isInitializedif (::tv_detail.isInitialized) {tv_detail.setText($psersonBean)//注意因为PsersonBean是 data class 类型 不需要重新toString 函数}}fun onClick(view: View) {when (view.id) {R.id.btn_refresh - refreshByrunBlocking2()R.id.btn_detail - detail()}}/*** 出现了ANR问题*/fun refreshByrunBlocking() {runBlocking(context Dispatchers.IO) {LogUtil.i(开始执行 刷新 耗时操作了)delay(30000)//假设30秒可以假设真实网络请求出现超时了方便演示出现ANR问题psersonBean PsersonBean(测试用户02)LogUtil.i(刷新 耗时操作结束)}LogUtil.i(刷新 耗时操作 事件执行完毕)showData()}/*** runBlocking里即使使用 async 也会出现ANR问题*/fun refreshByrunBlocking2() {runBlocking(context Dispatchers.IO) {LogUtil.i(开始执行 刷新 耗时操作了)val psersonBean async {delay(30000)//假设30秒可以假设真实网络请求出现超时了方便演示出现ANR问题PsersonBean(测试用户02)}LogUtil.i(刷新 耗时操作结束)}LogUtil.i(刷新 耗时操作 事件执行完毕)showData()}/*** 使用GlobalScope.launch 没有出现ANR问题*/fun refreshByGlobalScopeLaunch() {GlobalScope.launch(context Dispatchers.IO) {LogUtil.i(开始执行 刷新 耗时操作了)delay(30000)//假设30秒可以假设真实网络请求出现超时了方便演示出现ANR问题psersonBean PsersonBean(测试用户02)LogUtil.i(刷新 耗时操作结束)withContext(Dispatchers.Main){//切换到主线程更新UIshowData()}}LogUtil.i(调用了 refreshByGlobalScopeLaunch 方法没有阻塞当前线程)}fun detail() {LogUtil.i(执行了查看详情事件)psersonBean.moblie 12345678901showData()} }使用GlobalScope.launch解决ANR问题 点击页面上的 刷新按钮 调用 refreshByGlobalScopeLaunch方法此方法里模拟了等待30秒耗时操作当点击 刷新按钮 等待3秒左右点击 详情按钮页面数据正常显示如下图所示 刷新耗时操作结束主线程更新UI 总结 runBlocking主线程会一直 阻塞 直到 runBlocking 内部的协程执行完毕执行长时间耗时操作会导致App应用出现ANR问题。runBlocking里即使使用 async 也会导致App应用出现ANR问题。GlobalScope.launch可以解决耗时操作App应用出现ANR问题注意需要配合withContext(Dispatchers.Main)进行更新UI操作 推荐 Kotlin协程基础
http://www.pierceye.com/news/649905/

相关文章:

  • 如何做免费网站制作郑州网站建设搜索优化
  • 北京网站制作17页谈谈对seo的理解
  • 西安专业建网站网站可信度必须做吗
  • 做神马网站如何做网站的推广
  • 如何提高网站排名的方法建设一个商业网站费用
  • 电商网站平台有哪些做自己的第一个网站
  • 源码资源下载站百度指数 多少流量 网站名
  • 合肥比较好的网站建设公司青阳网站建设
  • 上海地产网站建设甘肃建设厅网站二级建造师报名时间
  • 扬州网站建设推广泊头网站建设甘肃
  • 什么行业要做网站建设推广这些水墨网站设计欣赏
  • 渠道网站wap百度
  • 在网站上如何做天气预报栏wordpress 分类列表
  • 做网站需要投资多少钱做网站的销售团队
  • 苏州哪个公司做门户网站seo优化方案报价
  • 电力建设官方网站做网站送优化
  • 门户网站建设模式包括网站群和中企动力企业邮箱登陆首页
  • 做调查网站的问卷哪个给的钱高wordpress邮箱注册功能
  • 上海php网站开发基于php网站建设
  • 大丰专业做网站做旅游网站当地人服务赚钱吗
  • 长沙网站制作公司推荐seo关键词排名优化
  • 内蒙古住房与城乡建设部网站广州十大软件公司排名
  • 营销型网站 易网拓德阳做网站
  • 网站建设seo虾哥网络购物网站技术实施方案
  • 门户网站框架下载陕西省建设工会网站
  • 网站有信心做的更好做外贸到什么网站上发布比较好
  • wex5做网站wordpress页面的设置
  • 绍兴市建设银行网站网站建设的基本术语
  • 建筑企业网站模板免费下载seo 网站换程序
  • wordpress怎么做排名seo怎么样