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

Android 8中的哪些变化使得从非UI线程更新ui成为可能

Android 8中的一些变化使得从非UI线程更新UI成为可能。这些变化包括:

  1. 引入了新的API:Android 8引入了一些新的API,如View.postOnAnimation()和View.postDelayed(),它们允许开发者在非UI线程上安排UI更新操作。这些API可以将UI更新操作放入UI线程的消息队列中,以便在合适的时机执行。
  2. 后台执行限制:Android 8引入了后台执行限制,即应用在后台运行时,系统会限制其对CPU和网络资源的访问。然而,开发者可以使用JobScheduler API来安排在合适的时机执行UI更新操作,以避免后台执行限制。
  3. 后台服务限制:Android 8对后台服务的限制更加严格,这意味着应用无法在后台无限制地执行任务。开发者可以使用JobScheduler API来安排在合适的时机执行UI更新操作,以避免后台服务限制。
  4. 异步任务框架改进:Android 8对异步任务框架进行了改进,使得开发者可以更方便地在非UI线程上执行任务并更新UI。例如,AsyncTask类的executeOnExecutor()方法可以指定任务在线程池中执行,从而避免在非UI线程上直接更新UI。

总结起来,Android 8中的变化使得开发者可以更加灵活地在非UI线程上更新UI。开发者可以使用新的API、JobScheduler API和改进后的异步任务框架来实现这一目标。

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

相关·内容

Android AsyncTask异步处理

在开发Android应用时必须遵守单线程模型的原则: Android UI操作并不是线程安全的并且这些操作必须在UI线程中执行。在单线程模型中始终要记住两条法则:  1. 不要阻塞UI线程  2. 确保只在UI线程中访问Android UI工具包      当一个程序第一次启动时,Android会同时启动一个对应的主线程(Main Thread),主线程主要负责处理与UI相关的事件,如:用户的按键事件,用户接触屏幕的事件以及屏幕绘图事件,并把相关的事件分发到对应的组件进行处理。所以主线程通常又被叫做UI线程。     比如说从网上获取一个网页,在一个TextView中将其源代码显示出来,这种涉及到网络操作的程序一般都是需要开一个线程完成网络访问,但是在获得页面源码后,是不能直接在网络操作线程中调用TextView.setText()的.因为其他线程中是不能直接访问主UI线程成员  Android提供了几种在其他线程中访问UI线程的方法: Activity.runOnUiThread( Runnable )  View.post( Runnable )  View.postDelayed( Runnable, long )  Hanlder  这些类或方法同样会使你的代码很复杂很难理解。然而当你需要实现一些很复杂的操作并需要频繁地更新UI时这会变得更糟糕。

03
领券