ݺߣ

ݺߣShare a Scribd company logo
축구 팀간의 경기 매칭을 도와주는
Android Application
작품명 : 우리 동네 풋볼 매니저
발표자 : 박영준
0. 개발 배경 및 목표
아마추어 축구 팀들이 서로 경기를 잡기 힘든 문제를 해결
1. 작품 개요
1. 원하는 날짜와 시간, 장
소를 입력하여 매치를
등록
2. 지역, 시간, 요일, 연령대별 검색을 통해 원하는 매치
만 필터링
3. 매치의 상세 정보 확인
후 매치 신청
4. 등록자는 여러 팀의 신
청 중 한 팀의 신청을
수락
2. 개발 도구 및 환경
+ Android SDK + PDT
3. 시스템 구조
4. 구현 내용 – App과 DB간 통신
• HttpURLConnection
• POST
• PHP MySQL QUERY
• json_encode()
• JSONObject
4. 구현 내용 – Thread
• UI Blocking
4. 구현 내용 – Thread(2)
• AsyncTask 내부에서 UI update
• 각 Activity마다 AsyncTask 구현
=> 코드의 중복
4. 구현 내용 – App과 DB간 통신
4. 구현 내용 – HttpAsyncTask 클래스
4. 구현 내용 – get_match_list.php
4. 구현 내용 – get_match_list.php
4. 구현 내용 – 매칭 Flow
매치 번호 날짜 장소 …
1 2014-11-21 세종대 …
2 … … …
3 … … …
매치 번호 팀 번호 상태
[매치 리스트 테이블]
[매치 신청 테이블]
0 : 신청, 1: 수락, 2: 거절
4. 구현 내용 – 매칭 Flow
매치 번호 날짜 장소 …
1 2014-11-21 세종대 …
2 … … …
3 … … …
매치 번호 팀 번호 상태
1 7 0
1 33 0
1 44 0
3 7 0[매치 리스트 테이블]
[매치 신청 테이블]
0 : 신청, 1: 수락, 2: 거절
4. 구현 내용 – 매칭 Flow
매치 번호 날짜 장소 …
1 2014-11-21 세종대 …
2 … … …
3 … … …
매치 번호 팀 번호 상태
1 7 1
1 33 2
1 44 2
3 7 0[매치 리스트 테이블]
[매치 신청 테이블]
0 : 신청, 1: 수락, 2: 거절
4. 구현 내용 – ListView 최적화
1) 동적 로딩
• 최초 데이터 로드시 10개의 아이템만 로드
• 리스트를 끝까지 스크롤하면 다음 10개의
아이템을 기존 리스트에 추가
4. 구현 내용 – ListView 최적화
1) 동적 로딩
4. 구현 내용 – ListView 최적화
1) 동적 로딩
get_match_list.php
MatchListFragment.java
4. 구현 내용 – ListView 최적화
2) 스크랩 표시
4. 구현 내용 – ListView 최적화
2) 스크랩 표시
싵ӗ
Q & A
감사니다
Ad

Recommended

PPTX
여행을 사랑하는 갤러리 발표 자료
Young-jun Park
PPTX
데이터베이스 프로젝트 최종보고서
Young-jun Park
PPTX
익명 채팅 앱 최종 발표 자료
Young-jun Park
PDF
2024 Trend Updates: What Really Works In SEO & Content Marketing
Search Engine Journal
PDF
Storytelling For The Web: Integrate Storytelling in your Design Process
Chiara Aliotta
PDF
Artificial Intelligence, Data and Competition – SCHREPEL – June 2024 OECD dis...
OECD Directorate for Financial and Enterprise Affairs
PDF
How to Leverage AI to Boost Employee Wellness - Lydia Di Francesco - SocialHR...
SocialHRCamp
PDF
2024 State of Marketing Report – by Hubspot
Marius Sescu
PDF
Everything You Need To Know About ChatGPT
Expeed Software
PDF
Product Design Trends in 2024 | Teenage Engineerings
Pixeldarts
PDF
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
PDF
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
marketingartwork
PDF
Skeleton Culture Code
Skeleton Technologies
PDF
PEPSICO Presentation to CAGNY Conference Feb 2024
Neil Kimberley
PDF
Content Methodology: A Best Practices Report (Webinar)
contently
PPTX
How to Prepare For a Successful Job Search for 2024
Albert Qian
PDF
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
PDF
Trends In Paid Search: Navigating The Digital Landscape In 2024
Search Engine Journal
PDF
5 Public speaking tips from TED - Visualized summary
SpeakerHub
PDF
ChatGPT and the Future of Work - Clark Boyd
Clark Boyd
PDF
Getting into the tech field. what next
Tessa Mero
PDF
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Lily Ray
PDF
How to have difficult conversations
Rajiv Jayarajah, MAppComm, ACC
PDF
Introduction to Data Science
Christy Abraham Joy
PDF
Time Management & Productivity - Best Practices
Vit Horky
PDF
The six step guide to practical project management
MindGenius
PDF
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
RachelPearson36
PDF
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Applitools

More Related Content

Featured (20)

PDF
Everything You Need To Know About ChatGPT
Expeed Software
PDF
Product Design Trends in 2024 | Teenage Engineerings
Pixeldarts
PDF
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
PDF
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
marketingartwork
PDF
Skeleton Culture Code
Skeleton Technologies
PDF
PEPSICO Presentation to CAGNY Conference Feb 2024
Neil Kimberley
PDF
Content Methodology: A Best Practices Report (Webinar)
contently
PPTX
How to Prepare For a Successful Job Search for 2024
Albert Qian
PDF
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
PDF
Trends In Paid Search: Navigating The Digital Landscape In 2024
Search Engine Journal
PDF
5 Public speaking tips from TED - Visualized summary
SpeakerHub
PDF
ChatGPT and the Future of Work - Clark Boyd
Clark Boyd
PDF
Getting into the tech field. what next
Tessa Mero
PDF
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Lily Ray
PDF
How to have difficult conversations
Rajiv Jayarajah, MAppComm, ACC
PDF
Introduction to Data Science
Christy Abraham Joy
PDF
Time Management & Productivity - Best Practices
Vit Horky
PDF
The six step guide to practical project management
MindGenius
PDF
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
RachelPearson36
PDF
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Applitools
Everything You Need To Know About ChatGPT
Expeed Software
Product Design Trends in 2024 | Teenage Engineerings
Pixeldarts
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
marketingartwork
Skeleton Culture Code
Skeleton Technologies
PEPSICO Presentation to CAGNY Conference Feb 2024
Neil Kimberley
Content Methodology: A Best Practices Report (Webinar)
contently
How to Prepare For a Successful Job Search for 2024
Albert Qian
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
Trends In Paid Search: Navigating The Digital Landscape In 2024
Search Engine Journal
5 Public speaking tips from TED - Visualized summary
SpeakerHub
ChatGPT and the Future of Work - Clark Boyd
Clark Boyd
Getting into the tech field. what next
Tessa Mero
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Lily Ray
How to have difficult conversations
Rajiv Jayarajah, MAppComm, ACC
Introduction to Data Science
Christy Abraham Joy
Time Management & Productivity - Best Practices
Vit Horky
The six step guide to practical project management
MindGenius
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
RachelPearson36
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Applitools

우리 동네 풋볼 매니저

  • 1. 축구 팀간의 경기 매칭을 도와주는 Android Application 작품명 : 우리 동네 풋볼 매니저 발표자 : 박영준
  • 2. 0. 개발 배경 및 목표 아마추어 축구 팀들이 서로 경기를 잡기 힘든 문제를 해결
  • 3. 1. 작품 개요 1. 원하는 날짜와 시간, 장 소를 입력하여 매치를 등록 2. 지역, 시간, 요일, 연령대별 검색을 통해 원하는 매치 만 필터링 3. 매치의 상세 정보 확인 후 매치 신청 4. 등록자는 여러 팀의 신 청 중 한 팀의 신청을 수락
  • 4. 2. 개발 도구 및 환경 + Android SDK + PDT
  • 6. 4. 구현 내용 – App과 DB간 통신 • HttpURLConnection • POST • PHP MySQL QUERY • json_encode() • JSONObject
  • 7. 4. 구현 내용 – Thread • UI Blocking
  • 8. 4. 구현 내용 – Thread(2) • AsyncTask 내부에서 UI update • 각 Activity마다 AsyncTask 구현 => 코드의 중복
  • 9. 4. 구현 내용 – App과 DB간 통신
  • 10. 4. 구현 내용 – HttpAsyncTask 클래스
  • 11. 4. 구현 내용 – get_match_list.php
  • 12. 4. 구현 내용 – get_match_list.php
  • 13. 4. 구현 내용 – 매칭 Flow 매치 번호 날짜 장소 … 1 2014-11-21 세종대 … 2 … … … 3 … … … 매치 번호 팀 번호 상태 [매치 리스트 테이블] [매치 신청 테이블] 0 : 신청, 1: 수락, 2: 거절
  • 14. 4. 구현 내용 – 매칭 Flow 매치 번호 날짜 장소 … 1 2014-11-21 세종대 … 2 … … … 3 … … … 매치 번호 팀 번호 상태 1 7 0 1 33 0 1 44 0 3 7 0[매치 리스트 테이블] [매치 신청 테이블] 0 : 신청, 1: 수락, 2: 거절
  • 15. 4. 구현 내용 – 매칭 Flow 매치 번호 날짜 장소 … 1 2014-11-21 세종대 … 2 … … … 3 … … … 매치 번호 팀 번호 상태 1 7 1 1 33 2 1 44 2 3 7 0[매치 리스트 테이블] [매치 신청 테이블] 0 : 신청, 1: 수락, 2: 거절
  • 16. 4. 구현 내용 – ListView 최적화 1) 동적 로딩 • 최초 데이터 로드시 10개의 아이템만 로드 • 리스트를 끝까지 스크롤하면 다음 10개의 아이템을 기존 리스트에 추가
  • 17. 4. 구현 내용 – ListView 최적화 1) 동적 로딩
  • 18. 4. 구현 내용 – ListView 최적화 1) 동적 로딩 get_match_list.php MatchListFragment.java
  • 19. 4. 구현 내용 – ListView 최적화 2) 스크랩 표시
  • 20. 4. 구현 내용 – ListView 최적화 2) 스크랩 표시
  • 21. 싵ӗ
  • 22. Q & A

Editor's Notes

  • #9: 안드로이드 어플은 MySQL과 직접 통신할 수 없기 때문에 서버 사이드 스크립트 언어를 사용해 데이터를 가져와야 하는데 저는 개발 경험이 있는 PHP를 사용했습니다. 먼저 어플이 로그인 이라던지, 매치 등록 등 각 기능별로 필요한 PHP 페이지에 접속하여 데이터를 요청하게 되는데 이때 웹페이지에 접속하기 위해 HttpURLConnection 클래스를 사용하였으며, 데이터를 전달하는 방식은 POST방식을 사용하였습니다. 데이터를 받은 PHP는 DB로 쿼리를 전송해 데이터를 가져옵니다. 가져온 데이터는 json_encode() 함수를 통해 JSON 포맷으로 웹 페이지 상에 출력해주고, 어플은 이 값을 읽어와 JSONObject를 생성하여 각 액티비티가 갖고 있는 뷰에 맞게 데이터를 출력해줍니다.
  • #10: 안드로이드 어플에서 외부 DB와 통신하기 위한 또 하나의 제약사항이 바로 UI를 갖고 있는 main threa에서는 네트워크 작업이 불가능하다는 것 이었습니다. 그래서 별도의 쓰레드를 만들어서 네트워크 통신을 해야만 했었는데, 처음에는 위의 그림처럼 직접 별도의 쓰레드를 만들고 UI쓰레드에서 start 시킨 뒤, join 메서드를 사용해 웹페이지의 내용을 다 읽어올 때 까지 기다리는 방식으로 구현했습니다. 그런데 이 방식을 사용하게 되면 쓰레드가 네트워크로부터 데이터를 가져오는 동안 UI Thread가 block되는 문제점이 있었습니다.
  • #11: 처음에 구현했던 직접 Thread를 만들고 작업을 수행하는 HttpTask클래스입니다. 내부 클래스로 Runnable 인터페이스를 구현한 클래스를 가지고 있고, 객체 생성 후 getContents() 메소드를 호출하면 내부 쓰레드를 실행 시키고 값을 가져올 때 까지 대기하도록 했는데, 이 과정에서 UI Blocking이 발생하였스비다. thread의 작업이 모두 끝나면 읽어온 내용(_contents)를 리턴하게 됩니다.
  • #12: UI Blocking 문제를 해결하기 위해 방법을 찾던 중 안드로이드 API 에서 제공하는 AsyncTask 클래스를 알게 되었습니다. AsyncTask 의 callback 메소드들을 구현하면 쉽게 thread 작업을 처리 할 수 있었습니다. 특히 쓰레드 작업이 끝난 후 수행할 코드를 onPostExecute() 메서드에 작성 해 놓으면 쓰레드가 종료될 때 까지 기다리지 않고 종료된 순간 이벤트를 받아 처리하기 때문에 UI update 등 동기화 처리를 쉽게 할 수 있었습니다. 이런 식으로 네트워크 작업이 필요하면 각 액티비티마다 개별적으로 AsyncTask 클래스를 상속받아 구현함으로써 작업을 처리하였습니다. 그러다보니 모든 액티비티에 중복되는 코드가 점점 늘어나게 되었습니다.
  • #13: 그래서 어떻게 하면 중복을 조금이라도 줄일 수 있을까 생각하게 되었습니다. AsyncTask를 매번 구현하다보니 어떤 부분이 중복되는지 알 수 있었습니다. 각 액티비티마다 요구하는 데이터가 다르기 때문에 요청하는 페이지의 URL과 parameter는 액티비티별로 달랐습니다. 또한 각각의 UI를 갖고 있다보니 결과를 UI에 출력해주는 부분도 결국은 각 액티비티마다 작성해야 했습니다. 그리고 모든 액티비티에서 공통된 부분이 바로 웹페이지에 접속해서 결과를 읽어오는 부분이었습니다. 즉 AsyncTask의 doInBackground() 메소드가 중복되고 있었습니다. 그래서 doInBackgroud만 미리 구현해 놓고 각 액티비티 에서는 필요한 부분만 구현하여 사용할 수 있도록 클래스를 디자인 하였습니다.
  • #14: AsyncTask 클래스를 상속받아 HttpAsyncTask라는 추상 클래스를 만들었습니다. 기본적으로 모든 네트워크 통신에서 공통이 되는 doInBackground() 메소드를 구현해 놓았으며, onPostExecute() 메소드를 abstract로 선언하여 다른 액티비티에서 이 클래스를 상속받아 사용할 때 구현해야 하도록 했습니다. 생성자에서는 웹페이지의 URL과 필요한 Parameter를 받아서 인스턴스 변수에 저장하도록 했고, 추가로 컨텍스트와 메시지를 받는 생성자를 추가하여 네트워크 작업시 필요에 따라 다이얼로그를 출력해주는 기능을 추가하였습니다. 그리고 구현한 클래스를 다른 안드로이드 프로젝트에서 라이브러리로 사용할 수 있도록 jar파일로 만들어 두었습니다.