基础:Android异步

这篇具有很好参考价值的文章主要介绍了基础:Android异步。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、什么是同步、异步?

同步:一旦开始,调用者必须等到方法调用返回后才进行后面的一系列操作

异步:调用者不用等待被调用的操作执行完成,而是继续处理调用者后续的操作

二、异步的目的:

  • 提高CPU利用率
  • 提升GUI程序的响应速度,要确认程序是I/O密集型的还是CPU密集型的 

注意:异步不一定快

三、CPU密集型和I/O密集型

1.CPU密集型(CPU bound)

也叫计算密集型,指的是硬盘、内存在读写数据时要比CPU速度快的多,CPU要读写I/O时,I/O在很短的时间内完成,CPU有很多的运算还要处理

2.IO密集型(I/O bound)

IO密集型指的系统的CPU性能比硬盘、内存的性能高的多,大部分时间是CPU在等待IO

3.总结

可以把任务分为计算密集型和IO密集型。

CPU密集型:

        使用场景:计算型代码、Bitmap转换、Gson转换等

        特点:进行大量的计算,消耗CPU资源,比如计算圆周率、对视频进行高清解码等等,全靠CPU的运算能力

        任务越多,花在任务切换的时间就越多,CPU执行任务的效率就越低,

        要最高效地利用CPU,计算密集型任务同时进行的数量应当等于CPU的核心数

I/O密集型:

        使用场景:文件读写、DB读写、网络请求等

        特点:CPU消耗很少,任务的大部分时间都在等待IO操作完成(因为IO的速度远远低于CPU和内存的速度)

计算密集型程序适合C语言多线程,I/O密集型适合脚本语言开发的多线程。文章来源地址https://www.toymoban.com/news/detail-532687.html

四、使用异步避免回调地狱

  • kotlin 协程,异步代码同步写法,使用:将回调转换为协程的挂起函数,挂起函数的部分运行在回调中
    •  异常处理:直接加try cache 
    • 取消处理:
  • 使用RxJava,用一些运算符用链式调用扁平化,但是要注意
    • 异常处理,可以定义一个异常映射捕捉,还有全局异常捕获
    • 取消处理:持有了外部类activity的引用,ui 已销毁,可能出现空指针,

到了这里,关于基础:Android异步的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android进阶:ListView性能优化异步加载图片 使滑动效果流畅

    ListView  是一种可以显示一系列项目并能进行滚动显示的 View,每一行的Item可能包含复杂的结构,可能会从网络上获取icon等的一些图标信息,就现在的网络速度要想保持ListView运行的很好滚动流畅是做不到的 所以这里就需要把这些信息利用多线程实现异步加载 实现这样功能的

    2024年02月16日
    浏览(55)
  • 【Android】多线程编程、异步消息处理机制以及new Handler()被标记为过时的解决办法,解决Handler内存泄漏问题和AsyncTask的基本用法

    1.1 弱引用 WeakReference (弱引用)是一种在Java中用于管理对象的引用的特殊引用类型。它的作用是在垃圾回收过程中,允许对象在没有强引用指向它时被回收( 当一个对象只有弱引用指向它,而没有强引用指向它时,垃圾回收器可能会在下一次垃圾回收时回收该对象,即使系

    2024年02月04日
    浏览(49)
  • Android复习(Android基础-四大组件)——Service与Activity通信

    我们前面学会了启动和停止服务的方法,但是服务虽然是在活动里启动的,但是启动服务之后,活动与服务之间基本没什么关系了。 正常情况,我们在Activity里调用startService()方法启动MyService这个服务,然后MyService的onCreate()和onStartCommand()方法就会得到执行。之后服务会一直处

    2024年02月13日
    浏览(44)
  • Android安全——客户端安全要点,android开发基础视频教程

    filter.addAction(“MY_ACTION”); localBroadcastManager.registerReceiver(myReceiver, filter); 发送本地广播 Bundle bundle = new Bundle(); bundle.putParcelable(“DATA”, content); Intent intent = new Intent(); intent.setAction(“MY_ACTION”); intent.putExtras(bundle); LocalBroadcastManager.getInstance(context).sendBroadcast(intent); 在Activity销毁时

    2024年04月17日
    浏览(36)
  • 【干货】Android系统定制基础篇:第三部分(Android静默安装、Android支持usb打印机)

    一些产品要求APP在升级时能够实现静默安装,而无需弹出安装界面让用户确认。这里提出两种实现方案: 方案一 APP调用『pm』命令实现静默安装,此方案无须修改Android源码,但需要root权限。 方案二 修改Android PackageInstaller 源码,增加Intent参数来指定是否要静默安装,同时支

    2024年02月10日
    浏览(51)
  • 【干货】Android系统定制基础篇:第六部分-Android扩展服务-AndroidX

    AndroidX 做为一个后台 Service 应用,开机自动运行,配合系统做一些定制化功能,并且对外提供 API。 主要功能: ● 硬件看门狗代理 ● USB Host/Device 切换 ● 4G 网络保活 ● 系统日志写入文件 ● 键值拦截 ● 启用应用 项目地址:https://github.com/aystshen/AndroidX 硬件看门狗代理主要

    2024年02月09日
    浏览(57)
  • Android 打包AAB+PAD(Unity篇),Android开发基础面试题

    这些部分适用于**「fast-follow」 和 「on-demand」**资产包。 检查状态 每个资产包都存储在应用程序内部存储的单独文件夹中。使用该 「isDownloaded()」 方法确定是否已下载资产包。 监控下载 查询PlayAssetBundleRequest 监控请求状态的 对象: // Download progress of request, between 0.0f 

    2024年04月14日
    浏览(46)
  • Android widget基础指南

    widget的概念最早是由一名叫Rose的苹果工程师提出,后来经过多方面机缘巧合的发展下,便有了今天Android平台上的小组件widget,一般APP开发可能应用场景较少,最常见的莫过于天气APP的widget。但对于从事IOT或车载方向的同学,定制化Launcher涉及修改的widget的相关业务则可能不少

    2024年02月20日
    浏览(42)
  • Android 开发规范(基础版)

    背景  项目的代码时间时间很长,经过太多人手,代码的规范性堪忧,目前存在较多的比较自由的「代码规范」,这非常不利于项目的维护,代码可读性也不够高。 分析现有项目的代码的情况,输出的『定制化规范』文档,用于提高代码的可读性和可维护性。 收益 对于个人

    2024年02月16日
    浏览(42)
  • Android开发基础

    介绍 1.安卓开发简介 2.App的运行环境 3.Android四大基本组件 4.Activity生命周期 5.创建新项目 6.Android开发工具 7.Android App中Activity的生命周期 总结 1.安卓开发简介 android开发是指android平台上应用的制作,Android早期由“Android之父”之称的Andy Rubin创办,Google于2005年并购了成立仅22个

    2024年02月09日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包