게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
안드로이드 막바지 코딩작업중에 질문드립니다..!
게시물ID : programmer_20621짧은주소 복사하기
작성자 : 훗날닭집사장
추천 : 0
조회수 : 581회
댓글수 : 9개
등록시간 : 2017/05/21 15:01:18
옵션
  • 본인삭제금지
우선 질문 작성 전에 오유분들께 진심으로 감사드린다는 말씀 드리고 싶습니다 (__)

프로젝트 사정상 원래 주력 언어가 C인 제가 짧은 2주가량 동안 야매를 섞어가는 공부로 오픈소스를 활용하는데

참 힘들더라구요. 자바/안드 숙련자분이였으면 하루이틀이면 끝날걸 2주동안 붙잡고 있었는데 그나마도

오유에 틈틈히 질문올린것 친절히 답변해주시고 찾아주셔서 해결했습니다. 저도 이게 끝나고 나면 제 아는 한에서 많은 도움

드리고 싶습니다 ㅠ_ㅠ



우선 현재 진행상황과 제가 해결하지 못하고 있는 (초보적인) 문제부터 말씀드리겠습니다.

안드로이드에 있는 sqlite DB에 약 100만개 row의 csv파일을 라인별로 읽어서 insert 해줍니다. (1개 row에 1개의 데이터만 들어있음. csv파일은
assets 폴더에 접근하여 읽음.)

이 상태로 DB에 있는 단어들을 찾아가면서 일종의 자동완성 기능을 하는건데요.
여기서 본격적인 질문 들어갑니다! (코드는 맨 하단에 첨부해놓겠습니다! 읽으시는데 불편함 없으시도록 최대한 설명 덧붙여놓았습니다. ㅠㅠ)


1. 데이터가 많아서 그런지 DB에 있는 단어들을 탐색하는데 너무 오랜시간이 걸려 AsyncTask라는 백그라운드 스레드를 통한 작업을 구현하려고 하는데요, 이걸로 시간이 걸리는 문제가 해결이 될까요? 시간이 오래걸린다 함은,앱 실행시 부터 단어 하나하나를 입력하려 할 때 마다 대기시간이 너무 길다는 얘기 입니다. 

2. DB 테이블에 값을 insert해줄 때, 단순히 csv에 있는 단어들만 넣어줄게 아니라 각 단어마다의 count도 함께 지정해서 넣어주고 싶습니다. 이유는, 각 단어마다 count 값을 지정해서 사용자가 자동완성 기능을 사용하면 해당 자동완성 단어의 count를 늘려주고 count 순으로 내림차순해서 (초기에 모두 0이면 무작위로 보여줄테지만..) 보여주고 싶어서 그렇습니다. 


DB 클래스에 관한 코드 입니다.
http://colorscripter.com/s/gOakbQ5

주석을 간단간단하게 달아놓았지만 간략하게 테이블 생성 / read 함수 (DB를 커서로 이동하면서 읽음) / insert 함수 (DB에 데이터 삽입) 
이렇게 구성되어 있는 상태 입니다.


MainActivity에 관한 코드 입니다.
http://colorscripter.com/s/OW6MJ8y

위에서 말씀드린 csv파일을 라인별로 읽어 sqlite DB에 insert 해주는 코드가 들어있고 AsyncTask를 활용하기 위해 
doInBackGround 함수에 코드를 넣어놓았습니다.
getItemsFromDb 함수가 있는데 이놈은 아래 클래스에서 호출됩니다! 이름처럼 DB에 있는 데이터들을 read해주는 함수 입니다.


http://colorscripter.com/s/WNcPE3r
이 클래스에서 상술해드린 getItemsFromDb 함수를 호출합니다.



질문하는데 사족이 너무 길어 읽으시기 불편하셨다면.. 죄송합니다 ㅠ_ㅠ
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호