Android에서 피드 (Facebook / Instagram과 유사)를 올바르게 구현하는 방법은 무엇입니까?

아밋 티 와리

저는 Android를 처음 접했습니다. 많은 이미지와 일부 메타 데이터가 포함 된 소셜 앱을 만들려고합니다. Facebook의 피드와 유사한 화면이 있습니다. 이 화면을 가능한 한 매끄럽고 표준으로 만들고 싶습니다.

내가 사용하는 라이브러리는 다음과 같습니다. OkHttp, Picasso, Retrofit, Gson.

지금은 백엔드에 더미 값을 시드했고 응답이 충분히 작기 때문에 모든 json을 한 번에 가져오고 있습니다. 그러나 앞으로는 json 응답을 제한하기 위해 이전 및 다음 필드가 있습니다.

지금 제가 가지고있는 몇 가지 질문 :

  1. OkHttp와 함께 Picasso를 사용하고 있습니다. 디스크에도 이미지를 캐시합니까 아니면 메모리에만 캐시합니까?

  2. 피드 캐싱에 대한 모범 사례는 무엇입니까? 대부분의 콘텐츠가 이미지이기 때문에 Picasso가 캐싱을 처리하도록해야합니까, 아니면 일부 항목을 직접 캐시해야합니까? JakeWharton에서 DiskLruCache 라이브러리에 대해 들었지만 시도하지는 않았습니다. 함께 가야하나요?

  3. 스크롤이 매끄럽게 나타나고 뷰에 들어온 후 이미지가로드를 시작하지 않도록 일부 피드 콘텐츠 (예 : 3 또는 4)를 캐시의 두 스크롤 방향으로 유지하는 방법.

  4. 사용자가 이번 한 번에 가져온 모든 콘텐츠를 스크롤 할 때 이전 및 다음 필드를 사용하여 json 응답을 자동으로 처리하는 방법. 기본적으로 커서를 기준으로 스크롤되는 콘텐츠 수에 따라 요청을 트리거하고 싶습니다.

  5. 좋아요 버튼이 있고 사용자가이 버튼을 클릭한다고 가정 해 보겠습니다. UI 및 사이드에서 좋아요 수를 변경하여 카운터 업데이트에 POST 요청을 보내거나 요청을 보내고 업데이트하기 전에 서버에서 업데이트 된 카운터를 기다려야합니다. UI?

나는 이미 Instamaterial 의 소스 코드 를 살펴보고 놀라운 것들을 배웠습니다. 그러나 전체 백엔드 통합을 보여주지는 않습니다.

공부하거나 배울 수있는 다른 오픈 소스 앱이 있는지 알고 싶습니다. 도움이 될 튜토리얼을 알고 있다면. 앱 경험을 최대한 원활하게 만들고 몇 가지 모범 사례를 배우고 싶습니다.

마커스 후퍼
  1. 이것은 메모리뿐만 아니라 디스크에 캐시됩니다. Picasso를 디버그 모드로 설정하면 이미지가로드 된 위치 (메모리 / 디스크 / 네트워크)를 설명하는 표시기가 표시됩니다.

  2. 피카소가 사물이 캐시되는 기간 등을 제어하는 ​​것이 마음에 들지 않는다면 캐싱을 처리하도록하는 것이 좋습니다. 또한 Picasso가DiskLruCache

  3. 여기에서 이미지가 주요 관심사 인 경우 모두 캐시되며 한 번 수행 한 후에는로드 할 필요가 없습니다 (업데이트 될 때까지). 자리 표시 자 표시 또는 숨기기와 관련된 논리를 변경하기 위해 Picasso에 콜백을 등록 할 수도 있습니다.

  4. 나는 당신이 찾고있는 것이 목록보기의 스크롤 리스너라고 생각합니다 (목록보기를 사용하고 있다고 가정합니다). 특정 위치 (5/6)를 지나면 다음 10 개를로드하기 시작합니다. recyclerview를 사용하는 onScrollStateChanged경우 스크롤 리스너 함수로 이를 수행 하고 LinearLayoutManagerto 호출을 사용할 수 있습니다.findLastVisibleItemPosition

  5. 어떤 접근 방식을 사용하는지는 실제로 중요하지 않습니다. 서버 카운터를 업데이트하는 데 오랜 시간이 걸릴 것이라고 생각하면 (안됨) 먼저 로컬에서 업데이트하는 것이 가장 좋습니다.

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

ASP Core2에서 사용자 ID를 올바르게 시드하는 방법은 무엇입니까?

약속 내에서 mongodb async / await를 올바르게 구현하는 방법은 무엇입니까?

HTTP 싱크를 올바르게 구현하는 방법은 무엇입니까?

Dockerfile : 노드 알파인 이미지에 bcrypt를 올바르게 설치하는 방법은 무엇입니까?

SQL Server 종속 테이블에 대한 뷰를 올바르게 만드는 방법은 무엇입니까?

Golang의 경로에 컨트롤러를 올바르게 만드는 방법은 무엇입니까?

Haskell에서 동일한 레코드 유형을 다르게 구현하는 방법은 무엇입니까?

Rust에서 스택 기반 언어를 올바르게 표현하는 방법은 무엇입니까?

현재 언어 정의에 다른 언어를 올바르게 삽입하는 방법은 무엇입니까?

지도에서 자리 표시 자 구문을 올바르게 사용하는 방법은 무엇입니까?

Android Java 목록에서 int를 올바르게 제거하는 방법은 무엇입니까?

mysql에서 float 유형을 올바르게 사용하는 방법은 무엇입니까?

탄력적 검색에서 와일드 카드를 올바르게 사용하는 방법은 무엇입니까?

time.Parse를 올바르게 사용하여 Unix 시간 문자열에서 시간 개체를 만드는 방법은 무엇입니까?

C ++ 클라이언트에서 QWebSocket :: sendBinaryMessage () 메서드를 올바르게 사용하는 방법은 무엇입니까?

일관된 결과를 얻기 위해 동시 고 루틴을 올바르게 구현 (및 / 또는 제한)하는 방법은 무엇입니까?

비동기를 사용하고 nodejs에서 올바르게 대기하는 방법은 무엇입니까?

intersphinx를 사용하여 PyQt5 문서에 올바르게 링크하는 방법은 무엇입니까?

RSpec-도우미 개체에 double 및 stub 메서드를 올바르게 사용하는 방법은 무엇입니까?

D3 V4에서 .ease ( "bounce")를 올바르게 사용하는 방법은 무엇입니까?

UITableViewController에서 Realm 객체를 올바르게 사용하는 방법은 무엇입니까?

redux-observable과 promise를 올바르게 사용하는 방법은 무엇입니까?

hashSet을 올바르게 사용하는 방법은 무엇입니까? (C ++에서 자바로 이동)

Eclipse를 사용하여 Java (Android)를 올바르게 디버그하는 방법은 무엇입니까?

HiveMQ에서 TLS 1.3 암호화 제품군을 올바르게 사용하는 방법은 무엇입니까? (SSL 예외 가져 오기 : 피어의 close_notify를 수신하기 전에 인바운드 닫기)

awaitMessages를 포함하는 루프를 올바르게 구현하는 방법은 무엇입니까?

센티넬 노드를 올바르게 사용하는 방법은 무엇입니까?

Java Apache HttpClient를 사용하여 POST 요청을 올바르게 만드는 방법은 무엇입니까?

'default (T)'처리에 대한 원시적 집착을 올바르게 피하는 방법은 무엇입니까?