2011-01-21 4 views
26

이 패턴은 웹 응용 프로그램을 개발하는 데 사용되는 주 서블릿 (전면 컨트롤러) 패턴과 비슷합니다.패턴 "하나의 작업, 다중보기": 장점 및 단점

이 패턴의 주요 아이디어 : 우리는 하나의 활동으로 여러보기를 관리하며이 활동은 현재 내용을 나타내는 역할을합니다. 모든보기에 활동 기능 (예 : 수명주기 방법)이 필요하지 않으므로 주요 문제는 입니다. 활동없이 갈 수 있다면 왜 사용해야합니까?


나는이 패턴을 사용하여 다음과 같은 단점이 발견 :

  1. 공식 소스가 Overload a Single Activity Screen 에 권장하지 않습니다하지만 그들은 이유를 설명하지 않습니다.

  2. TabActivity, ListActivity, MapActivity은 사용할 수 없습니다. 그러나 그들 없이는 몇 가지 트릭이 있습니다.

  3. 다른 화면에 다른 메뉴가있는 경우 활동이 없으면이를 만드는 것이 좋습니다.
  4. 역사를 스스로 지켜야합니다. 그러나 개발이 그렇게 어렵지 않습니다.

나는이 패턴을 사용하여 다음과 같은 장점을 발견 :

  1. 그것은
  2. 우리는 우리가
  3. 을 원하는대로 역사를 관리 자유롭게 다른 활동을 시작하는 것보다 현재 활동의 내용을 변경 빠르다
  4. 우리는 하나의 활동 상황이있는 경우는 찾아 메모리 문제를 해결하기 위해 간단는

무엇을 당신 생 누수 이 패턴에 관한 nk? 다른 장점/단점을 제공 할 수 있습니까?

답변

59

TabActivity, ListAcivity, MapActivity를 사용할 수 없습니다. 그러나 그들 없이는 몇 가지 트릭이 있습니다.

MapView을 사용하려면 MapActivity을 사용해야합니다. 기본 설정 XML을 사용하려면 PreferenceActivity을 사용해야합니다.

스스로 기록을 유지해야합니다. 그러나 개발이 그렇게 어렵지 않습니다.

자신의 기록을 관리하는 어려움은 기록이 무엇인가에 달려 있습니다. 간단한 마법사의 히스토리 구현은 매우 쉽습니다. 그러나 이는 특히 간단한 시나리오입니다. 안드로이드에는 역사적인 관리 코드가 적당하며 다른 임의의 경우에 다시 작성해야합니다.

당신도 잊었 :

# 5.당신은 물건을 청소하는 것을 잊을 것이기 때문에 기억을 누출하기 쉽고, 안드로이드는 물건들을 정리하지 않을 것입니다. (당신이 많은 작은 활동들을 사용하고 있다고 가정하기 때문에, 그들이 추천하는 방식입니다.)

# 6. 구성 변경 (회전, 도킹, SIM 변경, 로케일 변경, 다중 디스플레이, 글꼴 크기 조정)에 대한 상태 관리는 더 복잡 할 것입니다. 이제 상태의 일부가되어야 할 추가 항목 (예 : 기록)을 파악해야하기 때문입니다. , 당신은 한 번에 한 번에 활동이 아닌 모든 것을 한 번에 다뤄야합니다.

# 7. 애플리케이션에 대한 엔트리 포인트가 여러 개 있다면 (예 : 실행기의 아이콘이 여러 개인 경우, 기본 위젯 이외의 다른 활동에 연결되는 앱 위젯, 응답하는 경우 등).

그것은, 속도의 차이는 대부분의 사용자, 이럴에 중요한되지 않습니다 가장 현대적인 안드로이드 장치에 대한 또 다른 활동

을 시작하는 것보다 현재 활동의 내용을 변경 빠르다.

우리는 하나의 활동 상황이있는 경우는 찾아 메모리 문제를 해결하기 위해 간단는 여전히 "하나의 활동 컨텍스트"이상이 있는지를 제외하고

누수. 기억해야 할 점 : 크고 작은 활동은 구성 변경시에도 계속 파괴되고 재 작성됩니다.

이 패턴에 대해 어떻게 생각하십니까? 코즈의 "nature of the firm" theory

는 일을위한 거래 비용은 내부적으로 다른 기업이 같은 일을 가지고에 대한 거래 비용보다 더 높은이 될 때까지 사업을 확장 말한다.

Murphy의 "활동의 본질"이론에 따르면 Murphy의 내부 활동 방식의 거래 비용이 다른 활동이 동일한 일을하는 거래 비용보다 높아지기 전까지는 활동이 확장됩니다. 안드로이드 개발자들은 활동을위한 "사용자 트랜잭션"모델을 선호 할 것입니다. 즉, 단단히 결합 된 것들 (예 : 마법사의 단계)은 단일 활동에서 처리되는 경향이 있으며 관계가 거의없는 것들 (예 : 검색 대 검색 대 설정 대 도움 vs. 대)은 별개의 활동에서 처리되는 경향이 있습니다.

+9

한 번만 상향 투표 할 수 있습니다. –

+3

굉장! 왜 우리는 '좋아하는'또는 '공유'버튼을 여기에 가지고 있지 않습니까? :-P –

+0

당신은 우리가 listactivity, mapactivity 등을 사용해야한다고 말합니다. 하나의보기에 목록과지도를 포함시켜야합니다. 사전 준비 활동을 사용해야한다면 어떻게해야할까요? – Moulde

2

나중에 새 기능이 추가되면 유지 관리하는 것이 끔찍한 일입니다. 나는 사용자가 알아 차릴 수 없을 정도로 더 빠를 것이라고 확신하지도 않는다. 구성 요소를 변경하거나 교환하는 것이 더 쉬운 작은 조각으로 만드는 것은 확실히 방법입니다.

관련 문제