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

通辽企业网站建设网络推广运营团队

通辽企业网站建设,网络推广运营团队,网站怎么建站点,多少钱算网站目录 Activity启动模式 onNewIntent解释 Activity启动模式的考虑时机 Service启动模式 ContentProvider的作用 Broadcast的注册方式 AsyncTask的作用 ViewModel LiveData Kotlin Coroutines 结合使用 Activity启动模式 Android中Activity的启动模式有四种#xff0…目录 Activity启动模式 onNewIntent解释 Activity启动模式的考虑时机 Service启动模式 ContentProvider的作用 Broadcast的注册方式 AsyncTask的作用 ViewModel LiveData Kotlin Coroutines 结合使用 Activity启动模式 Android中Activity的启动模式有四种分别是 standard标准每次启动一个Activity都会重新创建一个新的实例不管这个实例是否存在。singleTop栈顶复用如果新的Activity已经位于任务栈的栈顶那么这个Activity不会被重新创建同时它的onNewIntent方法会被调用。如果Activity不在栈顶还是会重新创建一个新的实例。singleTask栈内复用系统先检查是否存在Activity的实例如果存在就调用其onNewIntent方法并把在它之上的所有其他Activity实例统统出栈如果不存在则新建实例。singleInstance单实例模式在一个单独的任务栈中创建该Activity的实例这个模式下的Activity只能单独地位于一个任务栈中。 onNewIntent解释 在Android开发中onNewIntent(Intent)是Activity的一个回调方法。当当前Activity启用了singleTop、singleTask或singleInstance启动模式并且该Activity已经存在于任务栈中时再次启动该Activity不会创建一个新的实例而是会调用现有实例的onNewIntent(Intent)方法并传入新的Intent。这个方法允许Activity更新其内容而不需要重新创建。 Activity启动模式的考虑时机 Activity启动模式的选择主要考虑以下几个方面 任务和返回栈管理根据应用的结构和用户的导航需求选择合适的启动模式以合理管理任务App中的一系列Activity集合和返回栈用户返回路径。避免重复实例为了避免不必要的Activity实例堆积可以选择合适的模式来复用Activity实例。Intent处理如果Activity需要处理新的Intent如搜索请求可能需要通过onNewIntent方法来更新Activity的显示内容而不是创建新的实例。 代码上首先需要在AndroidManifest.xml中定义Activity的启动模式。比如设置MainActivity的启动模式为singleTop activity android:name.MainActivityandroid:launchModesingleTop /activity然后在MainActivity中重写onNewIntent方法 class MainActivity : AppCompatActivity() {override fun onNewIntent(intent: Intent?) {super.onNewIntent(intent)} }Service启动模式 Service有两种启动方式 startService通过调用startService(Intent)来启动。Service将在后台无限期运行即使启动它的组件已被销毁也如此。需要通过stopSelf()或stopService(Intent)来停止Service。bindService通过调用bindService(Intent, ServiceConnection, int)来实现。Service与调用组件绑定调用组件如果被销毁了Service也会被销毁。 IntentService是Service的子类用于处理异步请求执行在工作线程。客户端通过startService(Intent)方法发送请求该服务在每次处理完后自动停止不需要手动停止。 ContentProvider的作用 ContentProvider提供了一种在不同应用程序间共享数据的方式。它可以封装数据并对外提供统一的访问接口。是多线程和多进程安全的但具体实现时需要考虑线程同步问题。 Broadcast的注册方式 BroadcastReceiver可以通过两种方式注册 在AndroidManifest.xml中静态注册。在代码中动态注册。 静态注册的BroadcastReceiver即使应用没有运行也可以接收到广播。动态注册的BroadcastReceiver只有在其注册的上下文通常是Activity或Service存在时才能接收广播。 广播可以是有序的也可以是无序的。有序广播ordered broadcasts可以被接收者中断即一个接收者可以阻止进一步传播。无序广播normal broadcasts则不能被中断所有注册了的接收者都会接收到。 AsyncTask的作用 AsyncTask用于在后台线程中执行短暂的任务并可以在主线程中更新UI。它简化了线程和Handler的使用。AsyncTask的主要方法包括 doInBackground(Params...)后台执行的任务。onPostExecute(Result)后台任务执行完后在主线程中执行。onProgressUpdate(Progress...)更新进度信息。 从Android 4.0开始AsyncTask默认在一个单线程池中串行执行任务但也可以通过executeOnExecutor方法在多线程池中并行执行。 PS由于AsyncTask容易导致内存泄漏和对生命周期的管理不便它在Android开发中逐渐被其他现代的异步处理方案所取代如使用LiveData和ViewModel结合Kotlin Coroutines。 ViewModel ViewModel是一个负责为UI准备数据的类它能够管理界面相关的数据并且能够在配置改变如屏幕旋转后继续存在。ViewModel的目的是从UI控制器中分离出数据获取的逻辑使得数据可以持久化。 LiveData LiveData是一个可观察的数据存储器类它遵循观察者模式。与普通的观察者不同LiveData是生命周期感知的意味着它尊重Android组件如Activity、Fragment的生命周期确保只有在组件处于活跃状态时才会通知数据变化。 Kotlin Coroutines Kotlin Coroutines是一种轻量级的线程管理工具它通过使用挂起函数来简化异步编程让异步代码看起来更像是同步代码。它能够使代码非阻塞地执行同时不会牺牲应用的性能。 结合使用 将LiveData、ViewModel和Kotlin Coroutines结合使用可以创建一个高效、易于维护和测试的数据流。 ViewModel中通过Kotlin Coroutines启动异步任务获取数据。数据获取在ViewModel中使用Coroutines来异步获取数据不会阻塞主线程。数据更新获取到数据后使用LiveData来存储这些数据。因为LiveData是生命周期感知的所以它会在Activity或Fragment活跃时自动更新UI。UI观察LiveDataUI组件观察ViewModel中的LiveData当数据发生变化时UI会自动更新。 代码上首先定义一个ViewModel它包含LiveData来存储和管理UI相关数据 class MainViewModel : ViewModel() {private val _data MutableLiveDataString()val data: LiveDataString _datafun fetchData() {viewModelScope.launch {val result withContext(Dispatchers.IO) { // 在IO线程中执行repository.getData()}_data.value result }} }在Activity或Fragment中观察LiveData数据变化并更新UI class MainActivity : AppCompatActivity() {private val viewModel: MainViewModel by viewModels()override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)viewModel.data.observe(this, Observer { data -textView.text data})viewModel.fetchData()} }
http://www.zqtcl.cn/news/25543/

相关文章:

  • 网站更换内容梅州市住房和建设局网站
  • 做的比较好的分享网站怎么做自己的视频网站
  • 网站修改方案html5 ASP 演示网站
  • 广东个人备案网站内容企业seo排名全包
  • 温州 网站优化wordpress微信授权访问
  • 上海模板网站制作多少钱wordpress远程唤醒
  • 网站分站系做分销商城网站的
  • 云梦网如何做网站开发一款app软件需要多久
  • 手机网站系统wordpress搜索翻页404
  • 柳州市建设工程质量安全监督管理处网站担路做网站
  • 网站建设时程序的作用优化seo搜索排名
  • 建设流网站项目wordpress如何优化页面
  • 首钢建设一公司网站中国执行信息公开网查询
  • 广州从化网站建设石家庄外贸网站制作公司
  • 关于销售网站有哪些内容wordpress自动标签插件
  • 哈尔滨企业建站系统网上店铺怎么运营
  • 西安市建设监理协会网站wordpress+替换字体颜色
  • 门户网站想要微信登录怎么做能打开各种网站的浏览器app
  • 销售网站html源码seo优化诊断
  • 网上网站开发html语言的特点
  • 什么公司网站建设做的好代码编程软件免费
  • 一般做网站用什么字体在线设计印章
  • 网站建设业务拓展网站建设怎么放到云空间
  • 建设网站策划书网络工程师考几科
  • 南通网站建设计划书小网站链接怎么找
  • 做中医诊所网站网站服务器租赁价格
  • 浙江标力建设集团网站济南学网站建设哪里好
  • 网站建设歺首选金手指14山西省建设执业资格注册中心网站
  • 做行业网站哪些公司做DZ网站维护
  • 建设网站的合约北京广告公司聚集地