woong's

Android Lambda 사용하기 본문

Develop/Android

Android Lambda 사용하기

dlsdnd345 2016. 2. 14. 13:14
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

Android Lambda 사용하기


안녕하세요. 책을 읽다 람다 표현식에 대해서 잠깐 접해본것을 정리해보려 합니다.

자바 8 에서 지원하는 람다를 android 에서 사용하려하니 바로는 사용이 안되더라구요.. 아쉽네요.

나중에는 바로 사용할수 있겠죠!!!


람다를 사용하기위해서 준비과정이 필요 합니다.


1. 사용 준비


   1. project build.gradle

   classpath retrolambda 를 추가합니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
// Top-level build file where you can add configuration options common to all sub-projects/modules.
 
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.3.0'
        classpath 'me.tatarka:gradle-retrolambda:2.5.0'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}
 
allprojects {
    repositories {
        jcenter()
    }
}
 
 
 
cs


   2. app build.gradle

   apply plugin retrolambda 를 추가

   compileOptions 를 추가합니다.  



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda'
 
android {
    compileSdkVersion 23
    buildToolsVersion "23.0.0"
 
    defaultConfig {
        applicationId "com.android.handstudio.ramdasample"
        minSdkVersion 18
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}
 
dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:23.0.0'
}
 
 
 
cs


위와 같이 준비를 하면 람다를 사용할 준비가 완료 되었습니다.



2. 사용방법


  1. 람다 사용전

     

1
2
3
4
5
6
7
8
9
10
11
12
13
 
/**
 * 기존 버튼 클릭 리스너
 */
private View.OnClickListener mOnClickListener = new View.OnClickListener() {
    @Override
    public void onClick(View v) {
         sayHello();
    }
};
 
 
 
cs


  2. 람다 사용후 


1
2
3
 
/** * 람다 버튼 클릭 리스너 */
private View.OnClickListener mOnClickListener = (v) -> { sayHello(); };
cs



결론



장점

익명 함수를 -> 로 변경해서 사용할수 있습니다.

코드도 간결하게 작성할수 있고 , 가독성도 지금은 잘 모르겠지만,

계속 사용하다보면 좋아질것 같습니다.

코딩을 하면 코드를 작성하는 시간보다 , 코드를 읽는시간이 훨씬 많이 들어간다고 합니다.


단점

인터페이스 함수를 단 1개만 가능하다.

이점은 아쉽네요.. 리스너나 다른 익명함수를 사용하다보면 여러개 쓰기 마련인데;;

Comments