Android Lambda表达式

Lambda 希腊字母 “λ” 的英文名称,在java8中出现Lambda表达式,可以让代码更简洁,语法样式为:参数 -> 表达式; 为什么要去学习Lambda,因为在rxJava中有很多这样的表达式;在Android中有哪些应用场景比较合适呢。

应用场景

在使用过程中,不建议在自定义接口中使用,原因是因为Lambda常应用在只有一个方法的接口中。而我们自定义的接口,后期可能会增加接口中的方法,这样修改的地方就比较多,因为Lambda不支持多个方法的接口,AndroidStudio也并没有在多个实现方法时提示要使用Lambda; 所以Lambda在Android中的常用场景应该为:

  1. 点击事件:OnClick
  2. 新建线程:new Thread
  3. runOnUiThread

等等

eg:
常规操作

button.setOnClickListener(new View.OnClickListener(){    @Override public void onClick(View v){        doSomeWork();    }});

lambda

button.setOnClickListener(     (View v) -> {        doSomeWork();    });

Lambda 的操作

语法

( 参数列表... ) -> { 语句块... }

用自定义的接口当栗子

MainActivity

public class MainActivity extends AppCompatActivity {    private final String TAG = "MainActivity";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        // 无参无返回值        new Test(new Test.Callback() {            @Override            public void success() {                Log.e(TAG, "无参无返回值");            }        });        new Test(() -> Log.e(TAG, "无参无返回值"));        // 有参无返回值        new Test(new Test.Callback1() {            @Override            public void success(String msg) {                Log.e(TAG, "有参无返回值");            }        });        new Test((String msg) -> Log.e(TAG, "有参无返回值"));        //无参有返回值        new Test(new Test.Callback2() {            @Override            public String success() {                return "无参有返回值";            }        });        new Test(() -> "无参有返回值");        //有参有返回值        new Test(new Test.Callback3() {            @Override            public String success(String msg) {                return msg + "的回调";            }        });        new Test((String msg) -> msg + "的回调");            }}

Test

public class Test {    private final String TAG = "Test";    // 无参无返回值    public Test(Callback callback) {        callback.success();    }    public interface Callback {        void success();    }    // 有参无返回值    public Test(Callback1 callback) {        callback.success("有参无返回值");    }    public interface Callback1 {        void success(String msg);    }    //无参有返回值    public Test(Callback2 callback) {        String msg = callback.success();        Log.e(TAG, msg);    }    public interface Callback2 {        String success();    }    //有参有返回值    public Test(Callback3 callback) {        String msg = callback.success("有参有返回值");        Log.e(TAG, msg);    }    public interface Callback3 {        String success(String msg);    }}

更多相关文章

  1. Android歌词秀设计思路(1)SafetyTimer
  2. 保存/恢复Activity和Fragment状态的最佳实践(译)
  3. Android(安卓)View构造方法第三参数使用方法详解
  4. Android中定时执行任务的3种实现方法
  5. 《第一行代码:Android(第2版)》,作者郭霖
  6. Android(安卓)WebView那些坑之上传文件
  7. Android(安卓)进阶 教你打造 Android(安卓)中的 IOC 框架 【View
  8. 条件数据库Android:sqllite使用
  9. android中ListView异步加载图片时的图片错位问题解决方案

随机推荐

  1. Android 调试桥(adb)是多种用途的工具,该
  2. Java vs. Kotlin:应该使用Kotlin进行Andro
  3. Interpolators详解
  4. Android 绘制原理浅析
  5. android jni 的编写一(JNI的静态注册)
  6. 【干货】测试Android应用安全性
  7. Android(安卓)OpenGL学习笔记(二)之----
  8. Android消息循环机制源码深入理解
  9. Android Studio如何查看获取MD5和SHA1
  10. 《Android系统源代码情景分析》连载回忆