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

餐饮外哪个网站做推广网站建设最好的公司排名

餐饮外哪个网站做推广,网站建设最好的公司排名,设计网站公司优选亿企邦,合肥房产网二手房出售一、Retrofit2 Square公司推出的Retrofit2库#xff08;https://square.github.io/retrofit/#xff09;#xff0c;改变了网络访问的方式。它实现了网络请求的封装。Retrofit库采用回调处理方式#xff0c;使得通过接口提交请求和相应的参数的配置#xff0c;就可以获得…一、Retrofit2 Square公司推出的Retrofit2库https://square.github.io/retrofit/改变了网络访问的方式。它实现了网络请求的封装。Retrofit库采用回调处理方式使得通过接口提交请求和相应的参数的配置就可以获得对应的响应并可以将响应获得的数据解析成特定的数据格式例如将JSON数据解析成对象。 Retrofit访问网络资源的流程 二、RxJava3 RxJava3https://github.com/ReactiveX/RxJava是响应式编程(Reactive Extensions)的java实现它基于观察者模式的实现了异步编程接口。RxJava库通过使用可观察的序列来组成异步和基于事件的程序。 Observable可观察 即是一个主题可以表示任何对象它可以从数据源中获得数据或者其他的状态值。Observable对象发出数据流。只要有观察者开始接受Observable就会提供数据发出数据流。可观察者可以有多个订阅者。 在RxJava3中常见的可观察流如下表所示 类说明io.reactivex.rxjava3.core.Flowable0…N流支持响应式流和背压按照onSubscribe onNext (onError 或onComplete)属性执行其中onNext可以执行多次onError和onComplete是互斥的。io.reactivex.rxjava3.core.Observable0…N流不支持背压按照onSubscribe onNext (onError或onComplete)的顺序执行onNext可以执行多次onError与onComplete是互斥的。 Operator操作符 承担了对 Observable 可观察对象发出的事件进行修改和变换。每个Operator操作实际上是一个方法/函数Observable对象作为输入参数对于Observable对象发射的每一项数据它会将在Operator方法/函数中应用这些数据然后将处理结果以Observable对象形式返回。因此返回的是另外一个Observable对象。这个Observable对象可以继续向后发射或结束。 操作符Operator可以有若干个形式如下 dataSource.operator1() .operator2() .operator3() 这些操作符之间构成了上下流的关系。 Observer观察者 Observer观察者订阅可观察Observable对象的序列数据并对可观察对象的每一项做出反应。观察者负责处理事件它是事件的消费者。每当关联的Observable发出数据时通知观察者。观察者一个接一个地处理数据。 背压策略 由于可观察者Observable)和观察者(Observer)是在不同线程中分别实现发送数据和接受数据。由于不同线程中处理的时间伴随着问题的复杂度会导致二者处理数据的速度出现不同。如果被观察者对象发射的数据的速度远远快于观察者对象处理数据的速度的话会将数据放入到缓存暂存或者直接放弃这些数据。这两种方法的处理都有不妥之处。因此需要制定“背压Back Pressure”策略来解决二者在异步场景下被观察者发射数据和观察者处理数据速度不一致的问题。因此通常所说的背压是在异步环境下控制流速的一种策略。常见的背压策略方式如下表所示 背压策略说明MISSING表示通过 create 方法创建的 Flowable 没有指定背压策略不会对通过 OnNext 发射的数据做缓存或丢弃处理下游必须处理操作符ERROR发生背压会发送MissingBackpressureException信号以免下游不能消费继续。BUFFER发生背压会缓存数据直至下游消化数据完成DROP发生背压会如果下游不能继续消费数据将最近发射的值丢弃 三、网络访问处理实例 假设已经有网络资源 http://127.0.0.1:5000/json/students.json也可以写成http://localhost:5000/json/students.json),访问的内容如下所示 在下面的例子中将结合Retrofit2RxJava3Compose组件实现对上述资源的访问并以列表的方式显示。运行结果类似下图 1.AndroidManifest.xml配置网络访问 要访问网络需要设置互联网的访问权限以及在应用中设置明文访问许可 uses-permission android:nameandroid.permission.INTERNET / applicationandroid:usesCleartextTraffictrue ... /application2.增加依赖 在项目模块的build.gradle.kt中增加如下依赖 //retrofit框架 implementation (“com.squareup.retrofit2:retrofit:2.9.0”) implementation (“com.squareup.retrofit2:converter-gson:2.9.0”) //增加RxJava库的依赖 implementation (“io.reactivex.rxjava3:rxjava:3.1.5”) //增加在Android对RxJava库的支持 implementation(“io.reactivex.rxjava3:rxandroid:3.0.2”) //增加Retrofit支持RxJava3的CallAdapter implementation(“com.squareup.retrofit2:adapter-rxjava3:2.9.0”) implementation(“androidx.lifecycle:lifecycle-viewmodel-compose:2.5.1”) 也可以根据最新的版本重新调整版本号。 3.定义实体类 data class Student(val id:String, val name:String, val gender:String, val age:Int) 4.定义网络访问 (1)定义网络服务访问接口 interface StudentService{GET(students.json)fun getStudents(): FlowableListStudent }表示访问students.json资源获取一个RxJava3的Flowable可观察者对象。这个可观察者对象封装了包含学生记录的列表。 (2)定义网络服务创建类 object StudentServiceCreator{private val urlStrhttp://10.0.2.2:5000/json/private val retrofit Retrofit.Builder().baseUrl(urlStr).addConverterFactory(GsonConverterFactory.create()).addCallAdapterFactory(RxJava3CallAdapterFactory.create()).build()fun T createService(serviceClass:ClassT):T retrofit.create(serviceClass) }Web服务器是本地服务器由于移动模拟器的127.0.0.1已经被占用因此要在移动端访问本地服务器可以通过10.0.2.2来访问。 定义Retrofit对象并在该对象中设置了解析JSON数据的转换对象和并发处理的适配器。 5.定义定义视图模型 定义视图模型调用的网络访问处理的相关类获取网络资源。 class StudentViewModel: ViewModel() {private val students:SnapshotStateListStudent mutableStateListOf()private val creator StudentServiceCreator.createService(StudentService::class.java)fun doNetwork(urlStr:String){creator.getStudents().observeOn(AndroidSchedulers.mainThread()).subscribe{it:ListStudent-if(students.isEmpty()){students.addAll(it)}}}fun getData() students }6.定义界面 (1)定义列表的显示学生记录单项的可组合函数 Composable fun StudentItemCard(student: Student){Card(modifier Modifier.fillMaxWidth().wrapContentHeight().padding(5.dp),elevation CardDefaults.cardElevation(defaultElevation 5.dp),colors CardDefaults.cardColors(containerColor Color.Blue,contentColor Color.White)){Column(modifier Modifier.fillMaxWidth().wrapContentHeight().padding(5.dp)){Text(text ${student.id},fontSize 24.sp)Row(modifier Modifier.padding(15.dp)){Text(text ${student.name},fontSize 24.sp)Spacer(modifier Modifier.padding(5.dp))Text(text ${student.gender},fontSize 24.sp)Spacer(modifier Modifier.padding(5.dp))Text(text ${student.age},fontSize 24.sp)}}} }2定义学生记录的列表 SuppressLint(UnusedMaterial3ScaffoldPaddingParameter) OptIn(ExperimentalMaterial3Api::class) Composable fun MainScreen(stuVM: StudentViewModel viewModel()){var students stuVM.getData()val displayState remember{ mutableStateOf(false) }Scaffold(floatingActionButton {FloatingActionButton(onClick {displayState.value true//访问网络资源stuVM.doNetwork(http://10.0.2.2:5000/json/students.json)//获取学生记录students stuVM.getData()}) {Icon(Icons.Filled.Refresh,contentDescription null)}}){Column(horizontalAlignment Alignment.CenterHorizontally){Text(modifier Modifier.fillMaxWidth(),text 学生记录列表,textAlign TextAlign.Center,fontSize 28.sp)if(displayState.value){LazyColumn{items(students){it: Student -StudentItemCard(student it)}}}}} }7.定义主活动MainActivity 在主活动中调用界面 class MainActivity : ComponentActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContent {Ch09_DemoTheme {// A surface container using the background color from the themeSurface(modifier Modifier.fillMaxSize(),color MaterialTheme.colorScheme.background) {MainScreen()}}}} }参考文献 陈轶 第8章 Android网络应用《Android移动应用开发微课版》P258-P293 清华大学出版社
http://www.hkea.cn/news/14327300/

相关文章:

  • 河北省建设工程协会网站上海互联网企业100强
  • 全国网站建设公司排名做软件需要网站有哪些
  • 济南企业型网站seo月薪
  • 诚讯通网站网站的二级目录怎么做
  • 哈尔滨建设网站公司吗wordpress手机版主题模板下载
  • 沧州企业网站建设方案鄂州建设网站
  • 太原市住房和城乡建设局的网站东营网站开发公司
  • 网站建设公司宣传范文长泰人才网597最新招聘信息
  • 用jsp做的网站前后端交互163邮箱官方注册入口
  • 深情密码免费观看网站媒介星软文平台官网
  • 吴川网站开发公司建筑培训网址
  • 做网站二维码网站做浮动边框asp代码
  • 如何建设备案网站视频教程wordpress 效率
  • 网站建设柒首先金手指8广告视频制作公司
  • 阜南县建设局网站wordpress防伪码
  • 怎么做关于梦想的网站免费的规划营销型的网站结构
  • 全国城市雕塑建设官方网站青岛网站推广哪家效果好
  • 基于cms系统网站的建设全球电子商务网站
  • 建设淘宝客网站源码怎么弄咸阳机场建设招聘信息网站
  • 广州网站设计开发福建省城乡建设信息网站
  • 企业网站建设的技术指标和经济指标wordpress 分享 插件
  • 360网站卖东西怎么做新洲城乡建设局网站
  • 成都房地产网站建设怎样做微信网站
  • 珠宝商城网站模板怎么注册logo商标
  • 快站微信网站制作国外优秀app设计网站有哪些
  • 江西做网站公司郑州网站建设丶汉狮网络
  • dede 网站根目录动漫制作专业需要艺考吗
  • 网站建设 金手指排名霸屏网站优化怎么做ppt
  • 厦门网站建设优化企业高端网站建设电话
  • 做安防在哪个网站做广告呢网站制作综述