2012-11-11 5 views
2

액티비티를 항상 메서드에 인수로 전달하는 것은 비용이 많이 듭니까?android - 액티비티로 매개 변수

알다시피, 나는이 클래스를 가지고있다. (이것은 나의 활동에 의해 일반적으로 사용되는 방법을 넣는 곳이다.) 그리고 거기에있는 모든 메서드는 Activity를 매개 변수로 사용합니다. 메서드의 결과가 메서드를 호출 한 활동으로 되돌려 보내야하기 때문에 기본적으로 결과를 던져야하는 대상을 알 필요가 있습니다. like :

public static void processThis(Activity activity){ 
// some Code 
} 

나는 이것이 베스트 프랙티스에 위배되는지 또는 사용하기에 비용이 많이들 것인지 알고 싶습니다.

감사합니다. 당신의 설명을 기대하면서 저를 계몽 할 것입니다.

올린 날짜 : 코드 재사용을 촉진하기 위해 내 활동에서 일반적으로 사용되는 방법을 추출하고 있습니다. 마찬가지로 ActivityA는 methodA를 사용하고 ActivityA로 브로드 캐스트를 보내면 methodB를 사용하는 ActivityB (methodA와 동일)와 ActivityB로 다시 브로드 캐스트를 보내는 ActivityB도 마찬가지입니다. 그래서 내가 성취하고자하는 것은 기본적으로 같은 methodA와 methodB를 추출하여 다른 클래스에 넣고 매개 변수 Activity를 추가하여 누구에게 방송을 다시 보내야 하는지를 알 수 있도록하는 것입니다. 감사.

+0

왜 그렇게하고 싶습니까? –

+0

@Fess, 코드 재사용을 촉진하기 위해 내 활동에서 일반적으로 사용되는 메소드를 추출하는 것을 볼 수 있습니다. 마찬가지로 ActivityA는 methodA를 사용하고 ActivityA로 브로드 캐스트를 보내면 methodB를 사용하는 ActivityB (methodA와 동일)와 ActivityB로 다시 브로드 캐스트를 보내는 ActivityB도 마찬가지입니다. 그래서 내가 성취하고자하는 것은 기본적으로 같은 methodA와 methodB를 추출하여 다른 클래스에 넣고 매개 변수 Activity를 추가하여 누구에게 방송을 다시 보내야 하는지를 알 수 있도록하는 것입니다. 감사. – lorraine

+1

이 경우 인터페이스 및 콜백을 사용하는 것이 좋습니다. 이런 식으로 수업에서 결과를 보낼 사람을 알 필요가 없습니다. 클래스의 사용자는 리스너를 등록하고 클래스는 등록 된 모든 리스너에 대해 콜백을 시작합니다. 사용자는 현재 디자인으로 제한하는 활동 일 필요는 없습니다. – Simon

답변

6

Java에서 원시가 아닌 모든 매개 변수는 암시 적 포인터입니다. 결과적으로 액티비티와 같은 객체를 전달할 때는 액티비티가 메모리에있는 주소를 지나갈 필요가 있습니다. 따라서 이러한 것을 전달하는 것은 Java에서 비용이 많이 들지 않습니다.

따라서 물어야하는 실제 질문은 비용이 많이 드는지 여부가 아니라 논리적/유지 관리 가능성 관점에서 가장 이해가되는 경우입니다. 그것이 의미가된다면, 꼭 그렇게하십시오.

+0

나는 액티비티에 대한 레퍼런스 주위를 지나가는 것이 잠재적으로 위험하고 발에 몸을 총으로 쏠만큼 큰 총을 준다는 것을 덧붙이겠다. 확실한 질문에는 충분한 정보가 거의 없습니다.하지만이 시나리오에서는 콜백 및 기타 패턴이 더 나은 방법 일 것입니다. – Simon

+0

@ 사이먼, 그리고 나머지, 나는 내 게시물에 대한 자세한 설명을 추가했습니다. 감사합니다 – lorraine

+0

@ 사이먼, 그 이유는 그것이 실제로 의미가 있는지 여부를 고려하는 두 번째 단락을 추가했습니다. –