2013-07-03 4 views
2

나는 식당에서 사용자 지정 메뉴 탐색을위한 응용 프로그램을 개발 중입니다. 프리젠 테이션 목적으로 데모 앱을 완성했습니다. 내 애플 리케이션 리소스 파일에 추가 한 이미지를 잔뜩 포함되어 있습니다. 이제는 사람들이 런타임에 자신의 이미지 & menuitems를 앱에 추가 할 수있는 짧은 설치를 만들고 싶습니다. 여기에 내 응용 프로그램의 화면입니다 :런타임에 응용 프로그램에 이미지 추가

enter image description here

이미지는 AzureBlobStorage에 위치 할 것이다. 사람이 고유 키 (GUID)를 부여 할 수있게되면 앱은 모든 MenuItem (Name, Category, ImageName, ...)을 포함하는 데이터베이스가 위치한 하늘빛 MobileServices에 연결하여 자신의 것으로 매핑합니다 로컬 SQL 라이트 데이터베이스. 이미지는 2 가지 크기의 .PNG 파일입니다. (150x150 & 1072x611)

제 질문은 속도를 잃지 않고 .APK가 만들어지면 응용 프로그램에 이미지를 추가하는 가장 좋은 방법입니다.

+0

중지하고 잠시 생각합니다. 누군가 위와 똑같은 질문을했다면 요구 사항을 이해하기도 전에 답을 얻어야하는 질문이 몇 개나됩니까? – Simon

+0

정말요? .APK가 생성되면 리소스를 관리하는 가장 좋은 방법은 제가 묻는 것뿐입니다. 그래서 런타임에서 드로어 블을 추가하고 이미지를 관리 할 효율적인 자산 관리자를 만드는 방법을 알고 있다고 상상해보십시오.아니면 뭔가 다른 것을 알아내는 데 정말로 많은 질문이 필요합니까? 내가 진실을 밝히지 않는 곳을 지적 할 수 있다면 제 질문을 조정할 용의가 있습니다. – Chris

+1

"짧은 설치"라고 말합니다. 그게 무슨 뜻 이죠? 사용자가 이미지를 선택하는 일부 UI는 무엇입니까? 그 이미지들은 어디에 있습니까? 서버에서 가져올 수 있습니까? 어떤 이미지 유형입니까? 어떤 크기? 서버, 인터넷 또는 LAN이라면? 어디에서 보관할 예정입니까? SDCard 또는 개인용 스토리지 .. etc 등 ..... 귀하의 질문은 "최고의 접근"과 "손실없이"속도입니다. 매우 모호합니다. 나는 당신이 달성하고자하는 것을 간결하게 설명하도록 도우려는 것입니다. – Simon

답변

1

Azure에서 검색 속도에 대해 할 수있는 일은 없습니다 (성능에 따라 클라우드 서비스를 선택하는 것보다는 짧지 만 Azure는 아마 그만큼 좋을 것입니다). SQL 코드가 효율적이라고 가정하면 Q는 어디서 어떻게 저장합니까?/검색하고 이미지를 다운로드하고 설치하면서 UI를 응답 성있게 유지하는 방법에 대해 설명합니다.

일반적으로 SDCard보다 훨씬 성능이 좋고 알려지지 않은 항목이 적기 때문에 개인 저장소에 저장합니다.

큰 이미지를 사용자 인터페이스의 가장 높은 해상도 대상 장치에서 계속 작동하는 최소 해상도로 축소해야합니다. 메모리의 비트 맵은 기본값으로 x * y * 4 바이트를 사용하며,이 경우 각 경우 약 2.6MB입니다.

Android: high quality image resizing/scaling

나는 당신이 당신의 기본 어댑터 getView()에서 그들을 재활용 확실히 이미지의 게으른 로딩을 구현되어야한다, 그래서 당신이 보여 주 UI가 어떤 종류의 ListView 있다고 가정합니다.

Lazy load of images in ListView

당신이 배경 스레드에서 그 일을해야하므로 클라우드에서 다운로드 할 수있는 속도, 예를 들어 대해 할 수있는 정도가 아니다 AsyncTask과 실제 이미지를 다운로드 할 때까지 목록보기에서 자리 표시 자 이미지를 사용합니다. 어댑터에 notifyDataSetChanged()을 사용하여 목록보기에 변경 사항이 있음을 알리십시오. 당신이 정말 좋은 안드로이드 OOP 솔루션을 원하는 경우

http://codehenge.net/blog/2011/06/android-development-tutorial-asynchronous-lazy-loading-and-caching-of-listview-images/

http://android-developers.blogspot.co.uk/2010/07/multithreading-for-performance.html

마지막으로, 콘텐츠 제공자를 구현하는 것이 좋습니다.

http://developer.android.com/guide/topics/providers/content-providers.html#creating

What is the use of private Content Providers?

+0

이 완벽한 답변을 많이 보내 주셔서 감사합니다. 내가 언급 한 것을 잊어 버린 것은 앱이 2 - 3 주마다이 작업을 수행해야만하고 수행 할 때 UI를 실행할 필요가 없다는 것입니다. 앱을 초기화/업데이트 할 수있는 진행 상태 페이지가 표시됩니다. 동료들과 함께 게시 한 옵션을 평가하겠습니다. 많은 많은 감사합니다. – Chris

+0

당신을 진심으로 환영합니다. 나는이 정보가 당신의 원래 질문이나 편집에 없었기 때문에 나의 대답을 만드는 데 약 20 분을 소비했기 때문에 질문에 대한 요점을 알기를 바랍니다. 앱을 사용해보세요. 환호 – Simon

+1

예, 있습니다. 모든 사람들이 이해할 수 있도록보다 포괄적이고 완전한 질문을 공식화하기 위해 앞으로 더 많은 시간을 할애 할 것입니다. – Chris

관련 문제