2010-04-26 3 views
2

저는 취미 프로젝트를 가지고 있습니다. 기본적으로 'todo'작업을 내가 원하는 방식으로 유지하는 것입니다. 당신은 내가 주어진 시간에 할 일 항목의 1000있을 것입니다 상상할 수 있듯이Java 응용 프로그램 설계 질문

public class TodoItem { 
    private String subject; 
    private Date dueBy; 
    private Date startBy; 
    private Priority priority; 
    private String category; 
    private Status status; 
    private String notes; 
} 

: 한 작업이라고 할 수 있습니다.

  • 할 일 항목을 저장하는 가장 좋은 전략은 무엇입니까? (현재 XML 파일에 있음) 모든 항목이로드되어 응용 프로그램 시작시 이 빠르게 실행됩니다 ( 응용 프로그램은 시작시 모든 항목 중 대시 보드 종류를 보여줍니다)?
  • 백엔드를 설계하여 Android 또는 J2ME 기반 휴대 전화로 이식 할 수있는 가장 좋은 방법은 무엇입니까?
  • 현재이 작업은 Java 스윙을 사용하여 수행됩니다. 내가 집중해야 할 것은 장치가 효율적으로 작동한다는 것입니다. 메모리가 제한되어 있습니까?
  • 응용 프로그램이 새로운 수행 작업을 입력하려면 양식을 엽니 다. 현재 사용자가 "저장"버튼을 누르면 새로 추가 된 작업을 my-todos.xml에 저장하려고합니다. 기존 XML 파일에 이러한 변화 를 추가 할 수있는 일반적인 방법은 무엇입니까? 모든 프로그래밍 질문과 마찬가지로
+1

제한된 메모리를 가진 장치가 문제가되는 경우에 Epoch 이후의 밀리 초 단위의 날짜 시간을 포함하는 * long * 대신 * Date * long *을 저장하여 간단히 Date 개체를 피할 수 있습니다. 기본적으로 Date가 수행하는 작업과 실제로 1-1 매핑이 있다는 점에 유의하십시오. 즉, 여기 저기에 몇 개의 객체를 저장하기 만하면됩니다 (따라서 메모리가 적고 저장 공간이 적습니다). 그것은 모바일 장치를 타겟팅 할 때 고려할 수있는 종류의 것입니다 (안드로이드는 특히 제한되지 않습니다). – SyntaxT3rr0r

답변

3

저장 : SQLite는 검색 및 크로스 플랫폼 지원과 같은 것들을위한 좋은 해결책 인 것 같습니다. Android 및 기타 여러 장치가 SQLite를 지원합니다.

+0

사실 SQL 데이터베이스로 작업하기 위해 Android 앱을 작성하는 것은 쉽습니다. 외부 DB를 응용 프로그램으로 가져 오기 위해 시도한 적이 없지만이를 수행 할 수 있음을 알고 있습니다 (예 : http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android 참조). -applications /). –

1

이 있습니다 (I 다시 전체 파일을 읽은 다음 계속 싶지 않아 참고) 많은 일을 할 수있는 방법. 그러나 전화를 걸려고 지정하면 고려 사항이 변경됩니다. 첫째, 의도 한 전화를보고 그들이 지원하는 것을 확인해야합니다. 특히 데이터 저장 측면에서.

너무 많은 데이터가없고 임의의 방식으로 데이터에 액세스하는 검색 및 기타 기능을 사용하지 않으려는 경우 XML 또는 일부 다른 플랫 파일 형식이 정상적으로 작동합니다.

그러나 더 많은 양의 데이터를 저장하거나 임의 액세스를 원한다면 더 많은 데이터베이스와 같은 데이터 저장 기술을 조사해야합니다. 목표 플랫폼이 성능이나 저장 용량 한계에서 한계를 부과 할 수있는 곳입니다.

다른 대안은 응용 프로그램을 설계하여 저장소가 코어 프로그램과 분리되도록하는 것입니다. 즉, PC 또는 전화인지 여부에 따라 다른 유형의 데이터 저장소를 적용 할 수 있지만 다른 모든 것을 다시 코딩하지 않아도됩니다.

0

마음에 떠오르는 한 가지 옵션은 다양한 맛으로 존재하는 메모리 내장 DB입니다. 아직 이들 중 하나를 사용 했으므로 메모리 사용이나 플랫폼 제약에 관해서는 말할 수 없습니다. 그래도 가치있는 일입니다.

마음에 떠오르는 또 다른 옵션은 TodoItem 개체의 큰 컬렉션을 유지하고이 컬렉션을 읽고 XML 파일에 유지하기위한 코드를 작성하는 것입니다. 기본적으로 큰지도 (또는 사용하기로 결정한 것)가 포함 된 클래스를 만들고이 클래스에 Externalizable을 구현하도록합니다.

두 옵션을 모두 사용하면 XML 파일을 메모리 내에서 읽을 수 있고 상태를 검색 및 변경할 수 있으며 결국 앱이 다운 될 때 최종 상태를 XML로 다시 쓸 수 있습니다 당신이 결정).