ListView 메모리 누 출 분석

2858 단어 ListView
메모리 누 출 문제:
 
http://www.cnblogs.com/loulijun/archive/2012/04/10/2437888.html
 
http://www.cnblogs.com/xiaowenji/archive/2010/12/08/1900579.html
 
질문
 
http://www.apkbus.com/android-18525-1-1.html
 
위의 두 편의 글 을 보면 대체적으로 listView 체제 에 대해 비교적 명확 하 게 이해 할 수 있다.또한 listView 에 대해 서 는 각 항목 의 난 서 를 주의해 야 한다.최 적 화 된 뷰 를 사용 하면 다시 사용 하 는 뷰 입 니 다.뷰 홀 더 를 사용 하면 다시 사용 하 는 뷰 안의 모든 구성 요소 가 되 기 때문에 다른 항목 의 구성 요소 의 변 화 를 일 으 키 지 않 고 모든 구성 요 소 를 단독으로 제어 하 는 방법 에 주의해 야 합 니 다.예 를 들 어 다음 그림 과 같다.
ListView内存泄漏浅析  
 
listview 의 모든 항목 에 있 는 그림 한 장과 세 개의 단추(공유,재생,삭제).위의 설정 과 사진 찍 기 단 추 는 listview 에 속 하지 않 으 며 화면 에 고정 되 어 움 직 이지 않 습 니 다.)현재 재생 단 추 를 누 르 면 다른 항목 의 재생 단추 에 영향 을 주지 않 습 니 다.
 
내 솔 루 션:문자열 배열 을 설정 한 다음 배열 의 모든 항목 의 변 화 를 제어 합 니 다.코드 는 다음 과 같 습 니 다:
 
//    GetView          
holder.btnPlay.setText(btnTexts.get(position));
		
holder.btnPlay.setOnClickListener(new OnClickListener() {
	@Override
	public void onClick(View v) {
		Button btn = (Button)v;
		//  
		if (btn.getText().equals("  ")) {

		          System.out.println("  ");
			btn.setText("  ");
			btnTexts.set(position, "  ");//btnText   ArrayList<String>.
			function.play(mList.get(position));
		} else {
			System.out.println("  ");
			btn.setText("  ");
			btnTexts.set(position, "  ");
			function.pause();
		}
			}
		});

 물론 이것 이 가장 좋 은 것 은 아니다.단지 잠시 문 제 를 해결 할 뿐이다.인터넷 상에 서 이런 문제 에 대해 서도 많은 해결 방안 이 있 는데,여기 서 나 는 얕 은 견 해 를 발표 하지 않 겠 다.
 
한 마디 로 하면 모 바 일 개발 의 가장 핵심 적 인 문제 도 가장 골 치 아 픈 문 제 는 바로 핸드폰 의 성능 문제 이다.
 
배터리 유한,메모리 유한,cpu 처리 능력 유한,네트워크 불안정 등.
 
     성능 최적화 에 도 많은 해결 방법 이 있다.중요 한 것 은 문 제 를 발견 하고 테스트 한 다음 에 증상 에 따라 약 을 써 서 문 제 를 해결 하 는 것 이다.예 를 들 어 bitmap 최적화,어디서 최적화 하 는 지,listview 에 불 러 올 때마다 초기 화 할 때 이 중간 성능 이 얼마나 큰 차이 가 있 는 지.자원 재 활용 시 단일 모델 을 사용 하 는 지,공장 모델 을 사용 하 는 지 고려 하 는 지 여부;하드웨어 자원 을 사용 할 때 이 스 레 드 에서 다시 스 레 드 를 열 어 호출 합 니 다.cpu 소모 가 큰 조작 을 만 났 을 때 로 컬 방법 에 쓰 여 있 습 니까?
 
 
                                                                                  ——그냥 남 겨 두 려 고.

좋은 웹페이지 즐겨찾기