Application.onTerminate函数不会被执行,有何影响

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Application.onTerminate函数不会被执行,有何影响相关的知识,希望对你有一定的参考价值。

参考技术A This method is for use in emulated process environments. It will never be called on a production android device, where processes are removed by simply killing them; no user code (including this callback) is executed when doing so.
android sdk里面的原话,很明确了,肯定不会被调用到,所以不要依赖于这个回调了本回答被提问者采纳

Kotlin函数 ⑧ ( 函数引用 作为函数参数 | ::函数名 | 函数类型 作为函数返回值类型 )

文章目录





一、函数引用作为函数参数



函数 作为参数 , 有两种方式 :

  • 传递 Lambda 表达式 , 也就是 匿名函数 作为参数值 ;
  • 传递 函数引用 作为参数值 ;

函数引用 可以将 具名函数 转为 函数的参数值 , 只要可以使用 Lambda 表达式 参数的地方 , 就可以使用 函数引用 进行替代 ;

函数引用格式 : 两个冒号 加上 函数名 , 就是函数引用 ;

::函数名

如下 doSomething 函数的 函数引用 是 ::doSomething ;

fun doSomething(name: String, age: Int): String 
    return "student $name $age years old, say hello"


具名函数 与 匿名函数 相对 , 具名函数 是有 函数名的函数 , 匿名函数 没有函数名 ;


代码示例 : 在下面的代码中 ,

首先使用 actionFun 函数类型变量 作为 studentDoSomething 函数的参数 , 该变量的值是一个 匿名函数 Lambda 表达式 ,

然后使用 doSomething 函数的 函数引用 ::doSomething 作为 studentDoSomething 函数的参数 ,

使用 匿名函数 Lambda 表达式 作为参数 与 使用 函数引用 作为参数 , 其效果是相同的 ;

fun main() 
    // 定义函数类型变量, 之后作为函数参数传递给函数
    // 该匿名函数变量, 可以作为参数
    val actionFun =  name: String, age: Int ->
        "student $name $age years old, say hello"
    

    // 调用 studentDoSomething 函数, 输入姓名, 年龄, 执行的操作
    // 使用匿名函数 Lambda 表达式作为参数
    studentDoSomething("Tom", 18, actionFun);

    // 使用函数引用作为参数
    studentDoSomething("Jerry", 17, ::doSomething);


fun studentDoSomething(name: String, age: Int,
                       action: (String, Int) -> String) 
    val act = action(name, age);
    println(act)


fun doSomething(name: String, age: Int): String 
    return "student $name $age years old, say hello"

执行结果 :

student Tom 18 years old, say hello
student Jerry 17 years old, say hello





二、函数类型作为函数返回值



函数 的 返回值类型 , 也可以是 函数类型 ;

也就是说 匿名函数 , Lambda 表达式 可以作为 函数的返回值 ;


代码示例 : 下面的代码中 ,

returnFun 函数的返回值 是一个函数类型 (String)->String , 返回的是一个 匿名函数 Lambda 表达式 ;

使用 var fun0 变量 接收 上述函数 返回的 Lambda 表达式 , 并执行该 匿名函数 ;

fun main() 
    // 接收函数类型的返回值
    var fun0 = returnFun();

    // 执行 返回的 函数
    var str = fun0("Tom")
    println(str)


// 函数的返回值 是函数类型
fun returnFun(): (String)->String 
    return  name: String ->
        "Hello $name"
    

执行结果 :

Hello Tom

以上是关于Application.onTerminate函数不会被执行,有何影响的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin函数 ⑧ ( 函数引用 作为函数参数 | ::函数名 | 函数类型 作为函数返回值类型 )

测开之函数进阶篇・第五篇《递归函数纯函数匿名函数偏函数》

8InfluxDB常用函数聚合函数,count()函数,DISTINCT()函数,MEAN()函数,MEDIAN()函数,SPREAD()函数,SUM()函数

Kotlin函数式编程 ② ( 过滤函数 | predicate 谓词函数 | filter 过滤函数 | 合并函数 | zip 函数 | folder 函数 | 函数式编程意义 )

Kotlin函数式编程 ② ( 过滤函数 | predicate 谓词函数 | filter 过滤函数 | 合并函数 | zip 函数 | folder 函数 | 函数式编程意义 )

1.19.9.函数概览函数引用精确函数引用模糊函数引用函数解析顺序精确函数引用模糊函数引用自定义函数准备工作概述开发指南函数类求值方法标量函数表值函数聚合函数