2011-09-15 6 views
0

나는 웹 페이지의 HTML 코드를 검색하고 특정 요소를 가져오고 반환해야하는 Android 앱을 작성 중입니다. 어떤 이유로 코드가 멈추거나 믿을 수 없을만큼 오랜 시간 동안 기본 문자열 작업을 수행하는 것 같습니다.문자열 연산이 Android에서 멈 춥니 다?

URL url = new URL(link); 
    URLConnection urlConnection = url.openConnection(); 
    InputStreamReader i = new InputStreamReader(
      urlConnection.getInputStream()); 
    BufferedReader in = new BufferedReader(i); 
    String check = ""; 
    String html = ""; 
    while((check = in.readLine()) != null) 
     html += check; 

대학 연결 속도로 에뮬레이터와 장치를 모두 완료하는 데 몇 분이 걸립니다. 반면에

URL url = new URL(link); 
    URLConnection urlConnection = url.openConnection(); 
    InputStreamReader i = new InputStreamReader(
      urlConnection.getInputStream()); 
    BufferedReader in = new BufferedReader(i); 
    String check = ""; 
    String html = ""; 
    int p = 0; 
    while((check = in.readLine()) != null) 
     p++; 

은 5 초가 걸리고 html 페이지에 올바른 줄 수를 반환합니다. 왜 문자열 작업이 오래 걸리나요? 원근법을 위해, 페이지는 대략 4000의 선이다.

답변

2

잘못 했으므로. 큰 문자열을 만들려면 StringBuilder을 사용하십시오.

StringBuilder sb = new StringBuilder(); 
while((check = in.readLine()) != null) 
    sb.append(check); 
html = sb.toString(); 

Why StringBuilder when there is String?

문자열을 추가 할 수 없습니다. String에서 호출하는 각 메서드는 새 객체를 만들어 반환합니다. 이는 String이 변경 불가능하기 때문입니다. 내부 상태를 변경할 수는 없습니다.

관련 문제