首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么ObservableCollection在安卓上更新UI而不是iOS?[Pendent]

ObservableCollection是一个实现了INotifyCollectionChanged接口的集合类,它可以通知UI层在集合发生变化时更新界面。在安卓平台上,ObservableCollection可以直接在后台线程中触发UI更新操作,而在iOS平台上不行。这是因为安卓和iOS在UI更新机制上有所不同。

在安卓中,UI更新可以在任意线程中进行,通过Handler或者AsyncTask等机制可以将后台线程的操作转移到UI线程进行更新。因此,在安卓上使用ObservableCollection时,可以直接在后台线程中更新集合并通知UI进行更新,从而实现UI界面的实时刷新。

而在iOS中,UI更新必须在主线程中进行。如果在后台线程中直接更新UI,会导致界面的不响应或者崩溃。这是由于iOS的设计决策,为了确保UI的稳定性和流畅性,只允许在主线程中进行UI更新操作。

因此,为了在iOS上实现类似的功能,开发者需要在后台线程中对ObservableCollection进行更新操作,并通过主线程调度机制将更新的任务发送到主线程进行UI更新。可以使用GCD(Grand Central Dispatch)来实现这一机制,通过在主线程上提交一个任务来更新UI界面。

需要注意的是,iOS上更新UI的机制并不是由ObservableCollection自身决定的,而是iOS平台的限制。ObservableCollection只是提供了一种方便的集合类,可以在适当的时候通知UI进行更新。

腾讯云的相关产品和产品介绍链接地址请参考腾讯云官方网站。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

蓝图已经画好了?透过“Q”看未来Android手机发展

本次开发者大会最引人关注的,莫过于安卓Q的正式发布了,因为相比于所谓的“安卓标杆”(然而并不是)Pixel手机本身,安卓的大版本更新似乎更能代表未来一年里安卓手机发展的风向标。 ?...隐私保护 近年来用户隐私泄露的情况越来越严重,安卓手机更是重灾区,其原因之一恐怕就是远不如iOS系统那样的权限管理机制了。谷歌也终于重视了隐私保护的问题,在安卓Q上做出了改变。 ?...在新的隐私安全策略下,用户可以选择只能在你使用它的时候获取定位信息。历时多年,iOS这项功能终于被“移植”到了安卓上。...结语 近几年安卓的大版本更新没有在UI设计上做过多的改变,不过第三方定制UI倒是听话了很多,逐渐跟着原生安卓的设计规范走。...在安卓Q上,我们同样也找不到肉眼可见的外观设计变化,加上流畅度已经不是安卓的主要矛盾,谷歌依旧将重心放在了功能性和安全性更新上。

90320

移动体验设计6大禁

1、请勿盲目模仿其它平台的UI元素和字体 当你在安卓或ios平台上创建应用时,不要从其他平台上照搬有鲜明主题的UI元素,也不要模仿它们的特定行为。...安卓中的UI元素(上)和ios中的UI元素(下) 相比于Material design,ios应用通常外观扁平,不使用厚度和阴影。...根据不同字体便可以判断你所使用的是安卓的应用还是ios的应用 如果你想自定义应用中的界面元素,请仔细根据你的品牌来设计,而不是把另一个不同平台的规范作为依据。...你也应该注意到每个平台自身独特的风格:安卓系统图标通常使用较粗的笔触,而iOS乐于使用笔画较细的线形图标。以下是几个图标的对比图: ?...安卓常用功能图标(上)ios常用功能图标(下) 3、不要把网站的体验复制到应用程序上 用户对移动应用的交互模式和界面元素有特殊的期待。

2.2K130
  • 从交互设计浅谈安卓开发有多痛苦,安卓程序员才最值得尊重

    我想做安卓移动开发的程序员都深受其害,而且遭受的迫害之深,不亚于那个文化什么的大革命(这里是开玩笑,仅仅是个比喻)。...比如:列表的删除操作,Android中的微信它就严格遵循了长按删除功能,而IOS就一贯的按照自己的风格,滑动删除;又比如底层四个tab按钮,安卓中可以滑动变换界面,而苹果的只能点击操作;再比如顶层的标题栏安卓中微信的标题栏是不变动的...,而IOS的是跟着界面变化的;再比如安卓的微信中点击退出是中间弹框,而苹果的则是底部弹出;再比如选择相册等等很多细节,你要注意去体验,去感受,你就会发现,微信的设计是按照Android和IOS各自的交互规范来设计和实施的...简单的说完了微信的交互设计,我就可以吐槽了,我可以想象到现在大部分的公司,尤其是小公司,为了节约成本和时间,公司里面的UI设计师,UE是不是都是在按照IOS的风格在设计交互和UI呢?答案是肯定的。...看到Android开发者为了实现IOS的交互天天把时间耗费在重写控件上,我实在是憋不住了,真心忍不住想骂一句:我艹,你以为你把西瓜放到肚子上装孕妇你能生孩子了?这是累赘!

    1.1K80

    IPhone 到底爽在哪?【知乎提问】

    直到后来,国内技术更新也很快,安卓手机厂商做出了各自的OEM安卓定制系统吧也只能这么叫,手机版本的鸿蒙当然也可以归类这个里面 安卓开源主打的是开放,生态嘛,国内一个样海外另一个样。...为什么这么说呢,海外卖的安卓手机基本上都是Google套件GMS,少了这玩意海外用户并不一定买账,有条件的朋友可以下载一些海外版本的软件跟国内软件对比下区别,这个没办法懂得都懂。...也不能说各种问题,只能说各种xxxxx助手,为了安装量你们打广告真拼呐,不过这个事情是几年前了,近两年倒是没这情况发生了,安卓手机厂商也在努力,我相信国内很多人还是安卓阵营的忠实粉,我也相信,安卓会越来越好...,对用户而言是一键注册 Taptic Engine线性马达带来的震动反馈真的超爽 Siri 除了小爱同学我还没找到和它能碰一下的手机语音助手(小爱仍需努力) UI扁平化设计,设计风格已经贯彻到现在,而...iOS 的设计风格虽然变化不大,但整体还是在不断进步的。

    49020

    C#使用Xamarin开发可移植移动应用(1.入门与Xamarin.Forms页面),附源码

    它为iOS,Android,Windows或Windows Phone上的原生UI呈现给用户的界面提供了自己的抽象。 这意味着你的应用程序可以共享大部分用户界面代码....例如(但不限于)iOS上的CoreMotion,PassKit和StoreKit; NFC和Android上的Google Play服务; 在Xamarin.Forms中创建UI界面有两种技术。...,一个IOS,如果你使用调试安卓,就设置他为启动项....这里有个需要注意的地方.TabbedPage所生成的页面,IOS和安卓会有所区别,如下: IOS的标签会在下面,安卓的根据谷歌给出APP应用程序建议,会在上面......国内很多App在这点上并没有遵循谷歌给的意见,都会统一放在下面. (在后续的章节里会讲,如何重写它,让安卓的也统一在下面).

    5.5K61

    前端开发华为鸿蒙系统应用 OpenHarmony JS

    为什么能这么做,是因为鸿蒙 OS 重新设计了整个架构,安卓和 iOS 办不到。这是从系统架构层面说事。...“确定时延”就是调度算法能保证,进程不会因 CPU 被其它进程占据而卡死,总能在规定时间内轮到自己顺利执行。因为架构是新的,所以应用响应时间能降低四分之一,安卓和 iOS 因为架构的原因办不到。...因为微内核架构好,鸿蒙的 IPC 效率能提升 5 倍,安卓和 iOS 受系统架构限制办不到。这是对关心性能的用户宣传。...鸿蒙不是安卓或者 iOS 在手机上的替代品,而是跨平台的新系统。起码在立意上,鸿蒙真不是对标安卓或者 iOS,而是对标谷歌的 Fuchsia(也是微内核的)。...通过鸿蒙的四大特性,也可以了解为什么谷歌要搞 Fuchsia,因为安卓架构的技术潜力有限,要搞下一代操作系统只能重新搞全新生态系统。 ?

    2K10

    企业全面移动化实践指南

    (2)业务推广角度的挑战 采用原生ios和安卓开发,安卓和ios两个团队是否能保证在同一时间节点业务一致,体验一致,这是个未知数;同时ios版本升级的审核周期过长,也很难确保新业务在第一时间推广。...为什么选择跨平台呢? 跨平台可以保证一套代码适配两个系统,对于开发者来说,就不用像之前一样既写ios代码又写安卓代码,并且也不用去过多的关心系统兼容性问题。...驱动原生这种方案的大致思路是:在运行态的时候,通过调用操作系统提供的接口,对UI进行渲染,而不是把渲染交给浏览器内核,因此在性能和体验上更好。 驱动原生技术的优势。...有的企业有过移动的实践开发,所以应考虑多种类型的应用,目前常见的应用类型有ios、安卓、混合、h5、微应用,要做到对这几种应用的统一管理。...在企业内部应用是分权限的,有的应用不是所有人都能使用的,应支持按权限进行管理。 为了业务的推广,应用商店还应该支持多种更新机制。

    94810

    逐渐安卓化会是ios的归宿吗

    无论是ui还是功能,ios14相对13而言,都产生了天翻地覆的变化。 这次更新除了烫手了点,费手机之外,只能说,真香。...乍一看似乎有点眼熟,没错,这不就是安卓的桌面小部件吗? 不过比起安卓的小部件,ios14还是有优势的,叠放小组件首次引入了算法,会根据时间与地点自行判断,展现相应环境下的界面。...ios14可以在大画面中实现小面积区域的视频播放,这个功能此前只在pad上存在。 视频小窗可以任意拖动,甚至隐藏进侧边栏而不中断语音,那些用大人手机上网课的娃怕不是又有新方法可以摸鱼了。...此外,ios还退出了carkey api、翻译、地图升级等功能,细数下来这次更新用“革新”来形容并不过分,但也有一种声音,会认为ios这些重大更新都是安卓玩剩下的,即英特尔之后,苹果似乎也成为了知名牙膏大厂...但既然ios已经迈出这样开放性的一步,想必在之后的更新中,还会越来越香。毕竟任何行业都需要在竞争中革新,才能真正颠覆未来。

    1.4K30

    微信支付的跨平台架构到底有多牛?

    以新需求开发为例: 7.0.4 版本需求一:收银台改版 7.0.4 版本需求二:简化版本收银台 跨平台实现:iOS + 安卓 共计 3 人日,在封板时间前完成 原生实现:iOS, 安卓封板时间后一周才基本完成...跨平台实现:iOS + 安卓共计 5 人日,在封板时间前完成 原生实现:iOS, 安卓封板时间后一周才基本完成 那么支付跨平台软件架构怎么样有效进行质量保障,并且提升生产力呢?...也就是通俗意义上讲的 MVC,MVVM 等。 为什么需要软件架构 早在 1986 年的时候,人月神话的作者在讨论软件的复杂性时,谈到:软件的本质复杂性存在于复杂的业务需求中。...和刚才基于 MVC 混乱的架构相比: 业务流程的代码能够聚合到 UseCase 中,而不是分散到原来 iOS, 安卓的各个 ViewController,Activity 中。...划分职责,明确生命周期 关于 Cgi 由谁发起,之前安卓和 iOS 都没有一个统一的做法。有些人会放到 Activity,ViewController,和 UI 代码耦合起来。

    1.2K10

    WPF 多线程下跨线程处理 ObservableCollection 数据

    大部分微软出品的库和框架都是十分照顾到初学者的,因此默认只开单线程模型的 WPF 框架,将在开发者没有经过 Dispatcher 调度器而直接或间接访问或修改 UI 时,抛出异常 理解了以上这一点,也就了解了为什么跨线程处理...而 非 UI 线程访问 UI 元素是限制只有 UI 线程才能合法访问 UI 线程创建的元素。...列表的能力,必须从业务上确保只有后台线程在访问,而 UI 线程不会对 ObservableCollection 列表进行任何的改动 在确保 UI 线程不会改动到 ObservableCollection...在 WPF 里面,只要一个集合类型的对象继承了 INotifyCollectionChanged 接口,即可在集合变更的时候,通过 WPF 框架监听 CollectionChanged 事件重新更新 UI...例如以上的代码,如果没有关注线程安全,在通知 UI 线程集合变更之后,刚好 UI 线程去读取此集合新的值的时候,集合本身就被其他线程更改了内容,那么此时的逻辑就不是符合预期的 以上的代码放在 github

    4K10

    微信支付的架构到底有多牛?

    跨平台实现:iOS+安卓共计 3 人日,在封板时间前完成。 原生实现:iOS, 安卓封板时间后一周才基本完成。 跨平台实现:iOS+安卓共计 5 人日,在封板时间前完成。...也就是通俗意义上讲的 MVC,MVVM 等。 为什么需要软件架构 早在 1986 年的时候,人月神话的作者在讨论软件的复杂性时,谈到:软件的本质复杂性存在于复杂的业务需求中。...和刚才基于 MVC 混乱的架构相比: 业务流程的代码能够聚合到 UseCase 中,而不是分散到原来 iOS,安卓的各个 ViewController,Activity 中。...②划分职责,明确生命周期 关于 CGI 由谁发起,之前安卓和 iOS 都没有一个统一的做法。有些人会放到 Activity,ViewController,和 UI 代码耦合起来。...在第三步管理网络请求后,我们的软件架构演进为这样子: 规范数据传递 iOS 和安卓的旧架构都存在信息传递不当和数据污染问题。这个问题最严重。iOS 和 安卓都出过不少 Bug。

    90010

    H5 手机 App 开发入门:技术篇

    三、原生技术栈 原生技术栈分成 iOS 和安卓两个平台。 简单说,iOS 的原生技术栈就是使用 Object-C 语言或 Swift 语言,在 Xcode 开发环境中编程。...它是一种集成开发环境(IDE),也是苹果公司指定的 iOS 官方开发工具,所有苹果手机的 App 都由它打包生成。 它可以在 Mac 电脑上通过应用商店免费安装。...不过,它的开发模型是基于 Angular.js,而不是 React。 (2)实例 下面就是 React Native 加载外部网页的实例。...最主要的一个问题是, UI 抽象层翻译出来的 iOS 和安卓原生页面,做不到完全一致,尤其是复杂页面,样式或功能存在差异。编译出来两个平台的原生 App 往往是一个正常,另一个会出现各种奇怪的小毛病。...如果你想用 React Native 做到 iOS 和安卓体验一致,并且充分发挥原生控件的功能,就需要同时熟悉 React Native、iOS、安卓三个平台,这对开发者的要求实在太高了。

    6.9K41

    React Native vs. Cordova、PhoneGap、Ionic,等等

    在影片中,我们所认知的现实实际上是一个模拟世界。有线索提示,即使是锡安,最后一座人类的自由之城,也是模拟出来的。...举个例子,你可以使用 C++ 、Java (或 Kotlin) 或 Cordova 来开发安卓应用。C++ 写的应用是最原生的,而 Cordova 写的应用是最不原生的。...移动端框架阵营 在 React Native 出现之前,移动端框架一般分为两个阵营。 首先是原生阵营,例如安卓的 Java/Kotlin 和 IOS 的 Objective-C/Swift 。...用户界面是针对目标平台(安卓或 IOS)的定制的,因此使用起来是流畅且愉悦的。但是,所有这些好处都被限制在一个平台上了。...这些应用可以同时运行在安卓和 IOS 平台上(还可以有更多平台)。但是,相比于原生应用,这类应用会没有那么流畅,能访问的硬件功能也有限。最重要的是,这些应用的用户界面太烂了!

    3.2K40

    企鹅电竞weex实践之UI篇

    次尝试新方案、新技术时都将面临着许多问题,企鹅电竞接入weex也不例外,我们在使用weex进行设计还原时并不是像H5一样顺利,为了避免小伙伴重复踩坑,本文将主要围绕H5与weex的区别以及weex ui...border weex不支持使用border创建三角形,web可以正常显示,而ios和android上显示的是矩形,建议使用图片代替。...2、避免在image标签上使用v-for,否则会导致安卓上图片渲染异常(如slider中的图片)。 4、透明度 以下是涉及到颜色的相关属性对透明度的支持度列表。...安卓环境下容器如果设置了宽高,那么子元素不能超出容器范围。...在王者荣耀中钻石并不是唯一通用的货币,在游戏中还有金币和点券,小编个人觉得钻石在游戏中并没有其他两种货币有优势。'

    1K20

    微信小程序性能监控方式

    、异步请求)运行环境准备: 包括小程序进程、客户端原生部分的系统组件和 UI 元素(如 导航栏、tabBar 等)、渲染页面使用的 WebView 容器、开发者 JavaScript 代码的运行环境、小程序基础库...3、官方建议标准安卓ios需要下载或更新时3.7s1.8s使用本地代码包时2.6s0.9s4、性能制约因素平台: 不同平台下(安卓、iOS、PC 等)设备性能、操作系统、框架实现、优化方案存在较大差异,...小程序版本更新:小程序版本更新时,用户需要更新小程序信息和代码包,代码缓存也需要重新生成,启动耗时会出现上涨页面复杂度: 页面的逻辑复杂程度、组件数量、结构复杂度等都会影响5、为什么安卓和 iOS 的启动耗时差异那么大...两个平台的设备性能、系统功能和启动流程实现存在一定差异:iOS 设备的平均性能要好于安卓;iOS 小程序和微信共用进程,而 Android 上小程序运行在独立进程,需要额外的进程创建和一些基础模块的初始化流程...;iOS 上需要使用系统提供的 WebView 和 JavaScript Core,初始化开销几乎可以忽略;安卓 UI 和系统组件的创建的开销远高于 iOS。

    2K20

    这么多移动开发的方式,传统方式写安卓、IOS 还有出路吗?

    前言 我所说的传统的方式是指,用 Java 或者 Kotlin 写安卓,用 Object-C 或者 Swift 写 IOS。...现在都 2018 年了,作为一个本科生找安卓或者 IOS 就更难了,虽然移动市场不会消失,但是用户或者开发者来说,原生移动应用都有天生的痛点。...在某些情况下 PWA 应用可以隐藏浏览器本身的所有视觉成分,光从UI和UX上看,很容易认为这就是一个原生界面,如下图其实都是PWA而不是原生应用。 桌面图标。...像 RN 和 Flutter ,他们是解决跨平台的问题,写一套代码,安卓、IOS 都能用,而且是原生的。 而像 PWA 、微信小程序,他们是用 web 的方式来达到跨平台的方式。...但是原生的安卓和 IOS 肯定是丢不掉的,因为底层的还得原生代码去调用。 没有任何一种方式是万能的,我们在选择技术方案的时候需要根据技术的特点,适合场景去做选择,没有最好,只有最适合。

    1.8K60

    当 AI 重塑开发体验,iOS 生态为何显得格格不入?

    即便是 Skip 这类的创新项目,目前也仅支持安卓而非网页平台。 规模化构建 假设我们也已经攻克了模拟器的难题,现在要将解决方案扩展到供数千开发者使用。服务器虚拟化本来就是成熟技术,不是吗?...最后,macOS 本质上就不是为无服务器环境设计的操作系统。Linux 系统上那些"开箱即用"的服务器体验,macOS 会给你带来各种意想不到的"特色功能"。 安卓生态怎么说?...鉴于谷歌的安卓生态是开源的,那它是否就比苹果生态更具优势呢? 理论上确实如此,多数项目通过简单的 ....模拟器问题与 iOS 要面对的基本相似,虽然安卓模拟器的规模化运行可行,但同样存在其特有的技术难题。...当下蓬勃发展的 UI 框架无不建立在开源技术之上,越来越多的开发团队选择了 React Native 而非 Swift 尤其是在 AI 服务让应用搭建速度发生质变的今天。

    2200
    领券