2013-01-08 3 views
1

디자인 제안이 필요합니다.디자인 - DB를 열고, 삽입하고, 닫을 위치?

가 여기 내 사용자 이야기 : 사용자로

, 나중에 검토를 위해 DB에 내 근무 시간을 저장합니다. 기본 화면에서 버튼을 한 번 클릭하면 간단하게 표시됩니다.

내 응용 프로그램에서이 문제를 처리하는 방법은 사용자가 버튼을 클릭하면 해당 클래스를 인스턴스화하는 팩토리 클래스 (호출 클래스 "X")를 호출하는 것입니다. 이 유형의 작업을 수행하고이를 메인 프래그먼트로 리턴하여 상호 작용하십시오.

클래스 "X"생성자에서 DB 연결을 설정하고 열고이 클래스 메서드 중 하나에서 DB에 새 데이터를 삽입합니다.

제 질문은 - 좋은 디자인입니까? 메모리 누수가 발생합니까? 내가 고려해야 할 것이 있습니까?

내가 도움을 수업의 흐름과 같은 UML을 첨부했습니다 :

+-----------------+     +----------------------+ 
|MainFragment  |     |  Factory   | 
|-----------------|     |----------------------| 
|     |     | ChooseShiftObject | 
|     |+---------+----+ |      | 
| CheckIn()  |     |      | 
+-----------------+     |      | 
            +----------------------+ 
               + 
               | 
               | 
               + 
               | 
             + + 
            +-----------------------+ 
            |  Shift   | 
            |-----------------------| 
            | DB.Open()   | 
            | DB.Insert(bla, bla. bla) 
            | DB.Close()   | 
            |      | 
            |      | 
            |      | 
            +-----------------------+ 

답변

1

당신이 안드로이드의 데이터베이스에 대해 알아야 할 한 가지가있다. SQLiteOpenHelper 객체를 싱글 톤으로 만들어야합니다. 그렇지 않으면 멀티 스레드 환경에서 문제가 발생합니다. herehere 설명을 찾아야합니다.

+0

고맙습니다. 제 SQLiteOpenHelper 클래스는 Reto Meir이 그의 책에서 설명한대로이며 캐시 된 것으로 알고 있습니다. – Yosi199

관련 문제