data class Salary(var base: Int = 100){
override fun toString(): String = base.toString()
}
operator fun Salary.plus(other: Salary): Salary = Salary(base + other.base)
operator fun Salary.minus(other:
Kotlin使用挂起函数为异步操作,使用kotlinx.coroutines中的launch、async 1. 第⼀个协程程序import kotlinx.coroutines.*
fun main() {
GlobalScope.launch { // 在后台启动⼀个新的协程并继续
delay(1000L) // ⾮阻塞的等待 1 秒钟(默认时间单位是毫秒)
转载
2024-10-21 16:52:20
50阅读
前言在反编译后我们知道挂起函数的内部执行流程就是传入一个continuation参数的状态机,即当一个函数定义为挂起函数时,编译器在编译后,会在参数最后传入一个Continuation< T >类型的参数。这个Continuation到底表示什么,本篇文章我们就来探讨一下。正文Koltin协程库其实Kotlin的协程框架代码非常多,但是它有一个层次关系,大致关系图如下:我们会发现最下面
转载
2024-10-25 07:07:49
184阅读
在Android开发中,使用Kotlin语言进行Dialog的回调处理是一个常见的任务。为了实现更加流畅和灵活的交互,我们需要深入了解如何侦听对话框的行为并作出对应的响应。接下来,我将通过详细的步骤,介绍如何实现这一功能,并将涉及多种图表和代码示例,帮助大家更好地理解思路和实现过程。
## 协议背景
在Android应用开发中,Dialog是用户与应用之间交互的重要组成部分。它可以用于显示重要
# Android Kotlin 中的回调函数作为参数
在 Android 开发中,回调函数是一种常见的设计模式,通常用于异步编程和事件处理。本文将探讨在 Kotlin 中如何将回调函数作为参数传递,并通过示例代码来演示其用法。
## 什么是回调函数?
回调函数是指通过某种机制(通常是另一个方法)传递给函数的执行体。它可以在特定事件发生时被执行。在 Kotlin 中,函数是一等公民,可以很容
Flow 上下文Flow 的收集动作总是发生在调用协程的上下文当中,而非定义 Flow 的上下文。fun log(msg: String) = println("[${Thread.currentThread().name}], $msg")
fun myMethod(): Flow<Int> = flow {
log("started")
for(i in 1..3){
一、前言观察者模式
作用:定义了一个一对多的依赖关系,让一个或多个观察者对象监听一个主题对象。这样一来,当被观察者状态发生改变时,需要通知相应的观察者,使这些观察者对象能够自动更新。核心操作:
观察者(订阅者)添加或删除对 被观察者(主题)的状态监听被观察者(主题)状态改变时,将事件通知给所有观察者,观察者执行响应逻辑二、使用观察者模式例子:监听股票价格变动重点:使用 Java A
转载
2024-05-30 13:21:55
23阅读
// 定义一个成功的变量 private lateinit var success: (resave: Boolean, message: String) -> Unit // 定义一个失败的变量 private lateinit var failed: (resave: Boolea
原创
2023-05-30 01:10:19
78阅读
一、简介它和OkHttp的定位完全不同。OkHttp 侧重的是底层通信的实现,而Retrofit侧重的是上层接口的封装。事实上,Retrofit就是Square 公司在OkHttp的基础上进一步开发出来的应用层网络通信库,使得我们可以用更加面向对象的 思维进行网络操作添加必要的依赖库dependencies {
...
implementation 'com.squareup.retrofit
文章目录一、前言二、添加依赖三、Dispatch四、CoroutineScope五、Job六、CoroutineContext三、参考链接 一、前言之前简单的了解了下协程,但是协程还有很多东西,所以从本篇开始进行下系统的了解二、添加依赖在Android中使用协程,需要添加以下依赖:dependencies {
implementation 'org.jetbrains.kotlinx:k
转载
2023-12-14 12:21:23
209阅读
最近一个项目涉及到跨进程的操作,我们的应用ClientApp需要用到底层的数据,但是这个数据data是在一个不断监听接收底层的服务ServiceA里面,痛苦的是这个服务是在另外一个进程里面。虽然我们可以用万能的广播机制,但这会造成系统非常大的负担。另外一种方法可以用ContentProvider,很多时候还是挺好用的,但是实时性不够,两个进程之间也缺乏交互性,所以我决定用AIDL来实现这一功能。
转载
2023-06-06 19:59:13
504阅读
点赞
概述AIDL是一个缩写,全称是Android Interface Definition Language,也就是Android接口定义语言,它是用来实现进程间通讯的,本文使用AIDL写一个小demo来实现夸进程间通讯 AIDL介绍文件类型:用aidl书写的文件的后缀是.aidl数据类型:基本类型, 字符串类型(String&CharSequence), List, Map, P
转载
2024-06-13 13:43:51
27阅读
有了 Service 类我们如何启动他呢,有两种方法:Context.startService()Context.bindService()在同一个应用任何地方调用 startService() 方法就能启动 Service 了,然后系统会回调 Service 类的 onCreate() 以及 onStart() 方法。这样启动的 Service 会一直运行在后台,直到 Context.st
转载
2024-08-04 13:57:25
35阅读
博主好厉害!终于是在这里看了个明白什么是回调机制。
说下自己的理解,方便以后回顾
首先需要有一个接口,在其中写一个方法。
要有两个类ClassA和ClassB
ClassA中有ClassB的成员对象(也就是ClassA的对象中会包含ClassB这个类的对象,我们想要让B去做一些操作时,就可以直接调用B中的方法了,记得要把接口参数传进
转载
2024-01-09 18:49:06
79阅读
跨进程服务调用,使用google提供的AIDL方法实现,下面是主要步骤
转载
2015-08-17 21:37:00
214阅读
一、回调函数回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。详细解释:客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回
转载
2023-12-26 11:38:41
106阅读
1、什么是Intent
Intent可以理解为信使(意图)
由Intent来协助完成Android各个组件之间的通讯,即Android四大组件之间的关联是通过Intent来实现。
转载
2023-07-27 17:33:31
116阅读
我们都知道在Intent中可以传递字符串、对象等,那么其实还可以返回数据到上一个活动中。而这个返回是只需要按Back键就可以。 在启动第二个Activity时,使用的就不是startActivity,而是startActivityForResult这个方法。在第二个页面中使用setResult(xxx, intent)就可以向上返回一个放置了结果内容的字符串的intent,然后在第一个Ac
转载
2023-05-22 13:54:34
480阅读
“回调/回调方法”这个词语对我们程序员来说肯定不陌生。在Android的学习及开发过程中,我们经常会听到也会用到“回调(回调方法)”这个词,那么什么是回调呢:在类A中定义了一个方法,这个方法中用到了一个接口(Interface)和该接口中的方法,但是这个方法方法没有具体的实现,需要在类B中去实现,类B实现该方法具体业务处理后,再传递给A类,供A类去调用,这种
转载
2023-08-02 15:40:07
184阅读
问题最近遇到了一个很有趣的问题,为什么不能够用回调的方式使用startActivityForResult呢?如果我们想要用回调的方式使用,有什么问题? 首先我们看一下目前官方的使用方式,如下图所示 其实这个流程很复杂,很不符合高内聚的原则,特别是如果页面的请求很多就会变成如下的情况protected void onActivityResult(int requestCode, int result
转载
2023-11-01 15:03:39
115阅读