Download presentation
Presentation is loading. Please wait.
Published byRoss Holt Modified over 8 years ago
1
User Interface Android GUI Tool OpenGL API XML Writer Optimized Layout Algorithm WPF Component Inter
2
Middle Data structure manager User Interface APIs Today App(Core) Web World Interface Web Data Analysis Module Timer Module Alarm Module Configuration Manager User World Dismiss Snooze Time (MM/DD HH:MM) Info display1 Home / Setting (Tab layout) Info display2 Info display3 Info display4 Interface
4
Middle Data structure manager User Interface APIs Today App(Core)Web World Web DB server Web-pages in Website Open APIs Interface Time Check Thread HTML Parser XML Parser Web Data Analysis Module Timer Module Parsing Data Structure Interface User World Alarm Event Notification Alarm Module Configuration Manager Setup App Module Configuration Data Storage(for setup) 1. Request Registered Task Structure Registered Task Structure 2. Run Registered Task 3. Change Activity & Run Parser 4. HTTP Request & Respond 5. Save Web data 6. Show data In app
5
Docum ent BuilderFactory (SAX Parser) XML Parser HTML Parser HttpURLConnection Request Response Request Response Input Stream Document class NodeList ArrayList Get XML file Ask to run get Element by Name Return all data In String Get Web Data that a user needs Get Start Point Get End Point StringTokenizer String Result Get HTML file Remove unnecessary Data StringBuilder class
6
담 당담 당내 용내 용 1234567891011121314 박세범 Timer Module 구현 시스템 통합 & 디버깅 박세범 Alarm Module 구현 박세범 XML(RSS) Parser 구현 및 Data 추출 박세범 Module Layout Mapping 작업 진주영 HTML Parser 구현 진주영 DKU Web Data 분석 및 추출 진주영 Setup App Module 구현 진주영 각 Module 별 자료 구조 접근 API 구현 조대영 Android SDK 학습 조대영 Layout Prototype 생성 조대영 Custom View 작업 조대영 세부 Layout 구현 김민화회의록 및 문서 작업 김민화형상 관리
7
담 당담 당내 용내 용 1234567891011121314 박세범 Timer Module 구현 시스템 통합 & 디버깅 박세범 Alarm Module 구현 박세범 XML(RSS) Parser 구현 및 Data 추출 박세범 Module Layout Mapping 작업 진주영 HTML Parser 구현 진주영 DKU Web Data 분석 및 추출 진주영 Setup App Module 구현 진주영 각 Module 별 자료 구조 접근 API 구현 조대영 Android SDK 학습 조대영 Layout Prototype 생성 조대영 Custom View 작업 조대영 세부 Layout 구현 김민화회의록 및 문서 작업 김민화형상 관리
8
Configuration Manager Setup App Module Configuration Data Storage(for setup) Alarm Module Time Check Thread Ring & Vibration Creator Task Executor Note module DataBase Accessor Note Creator & Editor Web Data Analysis Module XML Parser HTML Parser Thread Creator Thread Handler TODAY Manager(CORE) Serialize & Deserialize Module Object Serializer Object Deserializer Item Maker Mapping Resource Set Custom Class Set Web World Data Storage DB SharedPreference FileSystm Data Manufacturer User World Interface Request & Response Interface
9
XML Parser NEWS Parsing Handler Weatjer Parsing Handler HTML Parser Notice Handler Food Handler TimeTable Handler Thread Creator Thread Handler
10
전체 Package 에 대한 설명을 한다.
11
Alarm Module Time Check Thread Ring & Vibration Creator Task Executor Note module DataBase Accessor Note Creator & Editor Web Data Analysis Module XML Parser HTML Parser Thread Creator Thread Handler TODAY Manager(CORE) Serialize & Deserialize Module Object Serializer Object Deserializer Item Maker Mapping Resource Set Custom Class Set Web World Data Storage DB SharedPreference FileSystm Data Manufacturer User World 1. Run registered Task 2. Request & Response 3. Get FileStream 2. Request to access DB 3. Run Query 2.2 Return String 3. Get
12
Alarm Module Time Check Thread Ring & Vibration Creator Task Executor Note module DataBase Accessor Note Creator & Editor Web Data Analysis Module XML Parser HTML Parser Thread Creator Thread Handler TODAY Manager(CORE) Serialize & Deserialize Module Object Serializer Object Deserializer Item Maker Mapping Resource Set Custom Class Set Web World Data Storage DB SharedPreference FileSystm Data Manufacturer User World 1. Run registered Task 4. Parsing 6. Show Activities 2. Request to access DB 3. Run Query 4. Return String 5. Shot String
13
HTTP Parser 부분이 들어가야 할 자리
14
Docum ent BuilderFactory (SAX Parser) XML Parser HTML Parser HttpURLConnection Request Response Request Response Input Stream Document class NodeList ArrayList Get XML file Ask to run get Element by Name Return all data In String Get Web Data that a user needs Get Start Point Get End Point StringTokenizer String Result Get HTML file Remove unnecessary Data StringBuilder class
15
Local Event? Global Event? Use Global Event Android Mechanism Running task As Service
16
1. BraodCaset Sender 생성 2. System Service 등록 3. BroadcastReceiver 생성 4. 사용자가 정의한 작업 수행
17
Service Broadcast 등록 BroadCast Receiver Dialog 띄우기 Vibration Bell Creator Main_Activity 띄우기
18
Android ListView Mechanism
19
ListView1 ListView2 ListView3 3 개의 ListView 들에 각각의 Item 들을 동적으로 추가하는 방식으로 설계되어 있다.
20
Dankook_Notice.java Food.java Memo.java News.java TimeTable.java Weather.java Dankook_Notice.java Food.java Memo.java News.java TimeTable.java Weather.java Main Activity Object Handling Package 1. Create Object Web & DB 2. parsingInfo() 3. ArrayList Notice_Adapter.java Food_Adapter.java Memo_Adapter.java TT_Adapter.java Weather_Adapter.java Notice_Adapter.java Food_Adapter.java Memo_Adapter.java TT_Adapter.java Weather_Adapter.java Adapter Package 4. Create Adapter Register Adapter into ListViews
21
아래와 같이 BaseAdapter 를 상속받은 형태이다
22
R.Java XML Data Mapping DataStructure TreeMap & HashMap 위 과정을 통하여, 동적으로 Layout Resource 에 접근할 수 있다. 동적 Layout 접근을 위한 Resource Mapping
23
Android Activity Communication Mechanism Intent putExtra method Serialization Byte of Stream
24
intent.putExtra("FoodArray", ObjectSerializer.serialize((ArrayList )food.getArrayList())); … intent.putExtra("TimeTableArray", ObjectSerializer.serialize((ArrayList )timeTable.getArrayList())); …. intent.putExtra("NewsArray", ObjectSerializer.serialize((ArrayList )news.getArrayList())); ….. Intent Intent 를 활용하여 Parsing 된 ArrayList 를 넘긴다
25
SQLiteSharedPreference SharedPreference : 안드로이드 내부에 저장, 비교적 간단한 자료들을 저장 SQLite : Android SDK 에서는 SQLite 를 사용하여 DB 를 생성, 수정, 삭제 할 수 있음
26
이전 Category 정보를 저장하기 위하여 SharedPreference 에 categoryInfo 라는 Key 를 가지는 String value 를 저장한다.
27
SQLite 를 활용하여 구현한 Memo Module
28
어려웠던 점 1. 성능 최적화 문제
29
DOM Parser VS SAX Parser XML 문서 … startDocument() startElement() characters() endElement() endDocument() XML 문서 … SAX 와 DOM 처리 방식 비교 – DOM 처리 방식 ( 트리 기반 API) – SAX 처리 방식 ( 이벤트 기반 API) 파싱 이벤트를 callback 을 통해서 애플리케이션에 직접전달하는 구조
30
구분 DOMSAX 파싱 기반트리 기반이벤트 기반 데이터 접근 방 식 랜덤순차 메모리 사용 방 식 데이터 크기에 비례해 서 증가 데이터 크기와 상관없이 일정한 메모리 사용 적합한 데이터경량 데이터경량 / 대용량 데이터 데이터 재사용가능불가능 ( 재파싱해서 사용할 수 있 음 )
31
Thread thread[3] Thread 1 Thread 2 Thread 3 Run() Thread 1 Thread 2 Thread 3 Start at the Same time Parsing() completedTaskNum++; if(completedTaskNum == 3) { for(int i=0;i<3;i++) { listView[i].setAdapter(baseAdapter[i]) listView[i].setOnItemClickListener(onclickEventClass);} completedTaskNum = 0; mainLayout.setVisibility(View.VISIBLE); completedTaskNum++; if(completedTaskNum == 3) { for(int i=0;i<3;i++) { listView[i].setAdapter(baseAdapter[i]) listView[i].setOnItemClickListener(onclickEventClass);} completedTaskNum = 0; mainLayout.setVisibility(View.VISIBLE); Handler completed 메시지 큐 ( Message Queue ) : 메시지가 저장되는 장소. 메시지나 Runnable 객체는 일단 큐에 저장되고 들어온 순서대로 순차적으로 처리된다. 루퍼 ( Looper ) : 메시지 큐에서 메시지를 꺼내어 핸들러로 전달한다.
32
Thread 1 Thread 2 Thread 3 Start thread in order 평균적으로 3 배 이상의 시간이 소요된다
33
Event 발생 -> Handling 본 함수들은 SAX Parser 안에 Interface 형태로 정의되어 있다. Handler 에서 본 함수들을 정의 해줘야 한다. Weather Handler News Handler
34
코드와 Layout 이 분리되어 있다. Native Java 와 C# C++ 에 익숙한 우리에게는 그리 친숙하지 않다.
35
본 LifeCycle 을 정확히 이해하고 있어야만 우리가 원하는 Activity 를 실행 시킬 수 있다. ex) Back 을 눌러 다시 예전 Activity 로 돌아올 경우 onCreate() 는 실행되지 않고 onResume() 이 실행된다.
36
어려웠던 점 Android SDK Mechanism Layout Mechanism : xml 과 source 파일 분리 Data Trasfer Mechanism : 왜 항상 Intent 를 써야 하는가 ? API : 다양한 API 를 적절히 적용하기 쉽지 않음 해결방법 : 안드로이드 프로그래밍 학습 -> 익숙해질 때까지 코딩
37
실행화면 Screen shot
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.