2012-01-09 23 views
7

Jsoup web sitesinde verilen Jsoup.connect() örneğini denedim ve Java'da iyi çalışıyor.Jsoup.connect() Java ile çalışıyor, Android ile değil

Bazı nedenlerle, AndroidManifest numaralı telefonumda Internet erişim iznine izin versem de Android Projelerinde (Eclipse) çalışamam. Jsoup kütüphanesi doğru bir şekilde kuruldu ve herhangi bir sorun olmadan Jsoup.parse() ile çalışabilirim. İşte, Java'da neyin işe yaradığıyla ilgili birkaç satırlık kod ve AndroidManifest'daki izin.

Java

public static void main(String[] args){ 
    Document doc; 
    try { 
     doc = Jsoup.connect("http://google.ca/").get(); 
     String title = doc.title(); 
     System.out.print(title); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

AndroidManifest.xml

<uses-sdk android:minSdkVersion="12" /> 
<uses-permission android:name="android.permission.INTERNET"/> 
<application 

bunu çalıştırmayı deneyin, çöker ve günlük der ki:

01-09 20:19:30.560: E/AndroidRuntime(26839): java.lang.RuntimeException: 
Unable to start activity 
ComponentInfo{com.mrdroidinator.com/com.mrdroidinator.com.Parselhjmq}: android.os.NetworkOnMainThreadException 
+0

günlük ne diyor:

Bu yeni bir başlık açın nasıl? – ethan

+0

FATAL EXCEPTION ana – user1139012

+0

01-09 20: 19: 30.560: E/Android Çalıştırıcısı (26839): java.lang.RuntimeException: Etkinlik ComponentInfo {com.mrdroidinator.com/com.mrdroidinator.com.Parselhjmq}: android başlatılamıyor. os.NetworkOnMainThreadException – user1139012

cevap

16

http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html

Sorun, ana iş parçacığındaki bir ağ işlemi gerçekleştirmenizdir, bu API düzeyinde 11+ için yasaklanmıştır. Bunun nedeni, eğer siz yaparsanız, belge indirmeyi tamamlayana kadar UI "dondurulmuş" olur, bu nedenle UI perfomance'ı etkilemeyen farklı bir iş parçacığı üzerinde bu tür işlemlerin yapılması gerekir.

Thread downloadThread = new Thread() { 
    public void run() { 
    Document doc; 
    try { 
     doc = Jsoup.connect("http://google.ca/").get(); 
     String title = doc.title(); 
      System.out.print(title); 
    } catch (IOException e) { 
      e.printStackTrace(); 
    } 
    } 
}; 
downloadThread.start(); 
İlgili konular