2016-12-15 2 views
0

내 애플리케이션보기에서 OnClick 동작을 구현하려고합니다. 내가 안드로이드를 처음 접했을 때 이것을 전달하는 것을 알고 싶다면 View.OnClickListener 인터페이스가 더 나은 선택이거나 setOnclickListener 위젯에 익명 클래스를 사용하는 것입니다. 내 생각에 나는 이것을 통과하면 모든 활동과 그 자식 요소가 특정 위젯에 영향을 미치므로 더 많은 메모리를 소비 할 수 있으므로 함께 갈 수있는 최상의 접근 방식 인 메모리 누수를 피할 수있다.setOnclickListener와 Activity가 View.OnClickListener를 구현합니다.

+0

가장 좋은 방법은 View.OnClickListener를 구현하는 것입니다. 코드의 일부 줄을 줄이고 모든 클릭 이벤트를 한 블록에 유지하기 쉽습니다. – Nas

+0

@Nas 옙 나는 이것을 알고 있지만 메모리 소비에 대해 궁금하다. –

+0

아마도 파일 크기에 따라 약간의 메모리 (공간)가 줄어들지 만, 둘 다 같은 클래스를 참조하며 동일하게 작동하여 같은 양의 메모리 (RAM)를 할당합니다. – Nas

답변

1

실제로 두 개 이상의 클릭 항목이 있기 때문에 OnClickListener를 구현할 때. 같은 내가 하나의 레이아웃 (10 개) 버튼이와 나는 각각 클릭 리스너를 작성하는 경우 : 우리가 OnClickListener를 구현하고 온 클릭의 모든 클릭 리스너를 쓰는 이유

button1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

     } 
    }); 
    button2setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

     } 
    }); 
    button3.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

     } 
    }); 

그것의 안 좋은 프로그래밍 연습 먹으 렴(). 이므로 나중에 변경하기가 쉽습니다.

다른 경우에는 단일 버튼이 있으면 setOnClickListener()를 사용할 수 있습니다.

이 두 가지의 차이는 지나치지 않습니다. 그것의 모든 안드로이드에서 좋은 코딩 연습에 관한. :)

+0

모두 괜찮습니다.하지만 인터페이스를 구현 한 다음이를 사용하여 전달하는 것이 특정 위젯에 대한 전체 활동 참조를 작성하므로 활동과 관련된 모든 메모리 오버 헤드가 복제 될 수 있습니다. 인터페이스를 익명 클래스로 전달하는 동안 우리는 활동이 아닌 특정 인터페이스를 전달합니다. –

0

또한 XML을 file.its 쉽게에서

android:onClick = "ButtonOne" 

속성을 사용할 수 있습니다!

+0

나는 쉬운 일을 요구하지 않고 있습니다. 메모리 관리라는 또 다른 관점에서 생각하고 있습니다. –

+0

AFAIK 모든 세 가지 접근 방식은 거의 동일한 메모리를 사용합니다. 고려해야 할 사항은 좋은 코딩 방법입니다. 상황에 따라 다릅니다. View.OnClickListener를 구현하고 android : onClick = "ButtonOne"을 사용하는 것이 각 단추에 대해 setOnClickListner를 사용하는 것이 바람직합니다. –

관련 문제