android kotlin中的标准函数和静态方法

首先记录一下activity的四种启动模式

1.standard 标准模式

2.singleTop 栈顶复用模式

3.singleTask 任务栈模式 

4.singleInstance 单例模式  单独启动另一个任务栈 并且任务栈中只存在一个activity

标准函数 with,run,apply函数的使用

with函数

 with函数结构

val result = with(obj){

        //value

}

观察以下代码 

//一般写法
        val list = mutableListOf<String>("Apple", "Orange", "Banana")
        val builder = StringBuilder()
        builder.append("Start eating fruit...\n")
        for (ls in list){
            builder.append(ls+"\n")
        }
        builder.append("The fruit is finished...")
        Log.d(TAG, "clickWith: "+builder.toString())

 对StringBuilder追加字符串 发现频繁的调用了builder对象 使用with函数如下

//with StringBuilder
        val withStringBuilder = with(StringBuilder()) {
            append("Start eating fruit...\n")
            for (ls in list) {
                append(ls + "\n")
            }
            append("The fruit is finished...")
            toString()
        }
        Log.d(TAG, "clickWith--StringBuilder: " + withStringBuilder)

首先是一个with函数里面放置了一个StringBuilder对象 在大括号里面调用了StringBuilder的方法 最后 调用完成之后 返回给了withStringBuilder变量 

使用集合再来写一下这个需求

  //with ArrayList
        val listAdd = with(ArrayList<String>()) {
            add("Start eating fruit...\n")
            for (ls in list) {
                add(ls + "\n")
            }
            add("The fruit is finished...")
            toString()
        }
        Log.d(TAG, "clickWith--list :" + listAdd)

 集合也是可以使用的

run函数

 run函数的使用方法其实与with函数使用没有太大的差异

 //StringBuilder
        val list = mutableListOf<String>("Apple", "Orange", "Banana")
        val run = StringBuilder().run {
            append("Start eating fruit...\n")
            for (ls in list) {
                append(ls + "\n")
            }
            append("The fruit is finished...")
            toString()
        }
        Log.d(TAG, "clickRun--list :" + run)

集合

 //ArrayList
        val run1 = ArrayList<String>().run {
            add("Start eating fruit...\n")
            for (ls in list) {
                add(ls + "\n")
            }
            add("The fruit is finished...")
            toString()
        }
        Log.d(TAG, "clickRun--list :" + run1)

 apply函数

apply函数的使用方法其实与with函数使用没有太大的差异

集合 

val list = mutableListOf<String>("Apple", "Orange", "Banana")
        val apply = ArrayList<String>().apply {
            add("Start eating fruit...\n")
            for (ls in list) {
                add(ls + "\n")
            }
            add("The fruit is finished...")
            toString()
        }

        Log.d(TAG, "clickApply--list :" + apply)

Stringbuilder

val apply1 = StringBuilder().apply {
            append("Start eating fruit...\n")
            for (ls in list) {
                append(ls + "\n")
            }
            append("The fruit is finished...")
            toString()
        }
        Log.d(TAG, "clickApply--StringBuilder :" + apply1)

但是要充分了解其特性 合适的地方用合适的函数

例:

companion object {
        fun actionStart(context: Context, data1: String, data2: String) {
            val intent1 = with(Intent(context, ThreeActivity::class.java)) {
                putExtra("param1", data1)
                putExtra("param2", data2)
            }
            val intent2 = Intent(context, ThreeActivity::class.java).run {
                putExtra("param1", data1)
                putExtra("param2", data2)
            }

            val intent3 = Intent(context,ThreeActivity::class.java).apply {
                putExtra("param1", data1)
                putExtra("param2", data2)
            }
            context.startActivity(intent3)
        }
    }

调用方法如下

btn_click_jump_Three.setOnClickListener {
            actionStart(this, "测试1", "测试2")
        }

获取数据

val data1 = intent.getStringExtra("param1")
val data2 = intent.getStringExtra("param2")
Log.d("ThreeActivity---->", "onCreate: data1 == $data1"+"---data2 == $data2")

静态方法

object Util {
    fun action1(){

    }
}

可以使用object修饰当前类 变为单例类 可以直接调用这个方法

其次如果不用object修饰 使用companion object 关键字来编写 也可以实现

class Util {
    fun action1(){

    }
    companion object{
        fun action2(){

        }
    }
}

虽然以上两种并不是真正的静态方法 但是能满足大部分的开发需求

真正的静态方法有两种

注解和顶层方法

注解写法

class Util {
    fun action1(){

    }

    companion object{
        
        @JvmStatic
        fun action2(){

        }
    }
}

顶层方法重写一个类文件

在kotlin中可以 直接调用此方法  doSomething()

在java中使用类名调用    HelperKt.doSomething();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值