2017-05-11 8 views
1

일부 정보는 :getResources(). getIdentifier() 메서드는 ListView에서 사용할 수있을만큼 효율적입니까? 응용 프로그램에 대한

응용 프로그램은 당김 폴더에 이미지가 많이 포함되어 있습니다. 모든 이미지의 크기는 1kb ~ 3kb입니다. 그리고 ListView에 그려야합니다.

는 좀이 추가적으로 사용자 정보를 데이터베이스로 이미지 (R.drawable.my_image)의 식별자를 저장해야합니다

내가 얻을 필요가있는 무엇.

문제 : 나는 응용 프로그램 (새 이미지 리소스를 추가)를 업데이트 할 때

이 식별자가 변경 될 수 있습니다. 따라서 데이터베이스에는 존재하지 않는 리소스로 연결되는 오래된 식별자가 있습니다.

나는 데이터베이스 대신 리소스 식별자리소스 이름을 저장하는 생각했고 그 나는 getResources().getIdentifier(String, String, String) 방법으로 그것을 검색합니다. 그러나이 메서드가 ListView에서 사용할 수있을만큼 효율적인지 여부는 알 수 없습니다. 설명서에 표시되는 내용 Note: use of this function is discouraged. It is much more efficient to retrieve resources by identifier than by name.

다른 해결책을 알고 있습니까?

+0

메모리 관리를 위해 글라이드를 사용하십시오. –

+0

@quicklearner im은 이미이 프루퍼스에 picasso를 사용하고 있습니다. 내가 걱정하는 것은 getResources(). getIdentifier() 메소드의로드 시간이다. – cpalosrejano

+0

리사이클 러 뷰를 사용하고 로더에 대해 읽으십시오. –

답변

0

마지막으로, getResources(). getIdentifier() 메서드를 사용하여 목록에 이미지를로드합니다 (recyclerview 포함). 내 목록에는 약 20 개의 이미지가 있습니다. 평균 크기도 3kb 미만입니다. 나는 오래된 장치에서 (그 행동이 그의 CPU에 의해 영향을받을 수있다) 애플 리케이션을 시험해 보았는데, 정상적으로 작동했다. 이 방법은 권장하지 않지만 해결책이 될 수 있습니다.

0

목록보기에서 사용하는 것이 효율적이지 않습니다. Resources.getIdentifier 방법의

공식 문서 : 주어진 자원 이름에 대한

반환 자원 식별자입니다. 완전한 자원 이름은 "package : type/entry"형식입니다. defType 및 defPackage가 각각 여기에 지정된 경우 처음 두 구성 요소 (패키지 및 유형)는 선택 사항입니다.

NOTE in documentation

참고 :이 기능의 사용은 권장하지 않습니다. 이름보다는 식별자로 자원을 검색하는 것이 훨씬 더 효율적입니다.

+0

고마워,하지만 이미 알고있어. 그리고 나는 그 질문에 그것을 썼다. 이 문제에 대한 해결책이 있습니까? – cpalosrejano