2013-12-20 1 views
0

Хорошо, у меня есть код, который раньше работал очень хорошо, и сейчас он работает не только на устройствах, ниже 11. Все начинается отлично и в моей основной деятельности я запускаю AsyncTask, внутри doInBackground появляется сообщение об ошибке, как показано ниже:Код подключения не работает для уровня api ниже 11 - doInBackground crash

@Override 
    protected Integer doInBackground(Integer... params) { 
     final String info = getString(R.string.inf); 
     final String post = getString(R.string.pos); 
     final String main = getString(R.string.mai); 

     String val1 = ""; 
     String val2 = ""; 
     String val3 = ""; 

     int connSucc = 3; 

      try { 
       JSONTokener sbTokener = new JSONTokener(Sources.httpGet(infoUrlStr).toString()); //==========>>It crashes right here 

       JSONArray jArray=new JSONArray(sbTokener); 
       for(int i=0; i<(jArray.length()); i++) 
      { 
       JSONObject json_obj_inf = jArray.getJSONObject(i); 
      . 
      . 
      . 

так что я проверил Sources.httpGet:

public static StringBuilder httpGet (String urlStr) { 
    StringBuilder err = new StringBuilder(); 
    hata.append("Error!"); 

    HttpURLConnection conn = null; 
    BufferedReader rd = null; 
    StringBuilder sb = null; 
    try { 
     URL url = new URL(urlStr); 
     conn = (HttpURLConnection) url.openConnection(); 
     conn.setConnectTimeout(6000); 
     conn.setReadTimeout(10000); 
     if (conn.getResponseCode() >= 200 && conn.getResponseCode() <= 299) { 
      rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
      sb = new StringBuilder(); 
      String line; 
      while ((line = rd.readLine()) != null) { 
       sb.append(line); 
      } 
      rd.close(); 

      conn.disconnect(); 

     } 
     else { 
      return err; 
     } 
    } 
    catch (NetworkOnMainThreadException a) { 
     return err; 
    } 
    catch (Exception e) { 
     return err; 
    } 
    finally { 
     if (rd != null) { 
      try { 
       rd.close(); 
      } catch (IOException e) { 
       return err; 
      } 
     } 
     if (conn != null) { 
      conn.disconnect(); 
     } 
    } 
    return sb; 
} 

Я думаю, что он не может даже попасть в этот httpGet способ. Как я уже сказал, это отлично подходит для уровня api выше 11. Ниже мой логарифм, который мне не очень помог.

12-20 10:32:11.194: E/AndroidRuntime(357): FATAL EXCEPTION: AsyncTask #1 
12-20 10:32:11.194: E/AndroidRuntime(357): java.lang.RuntimeException: An error occured while executing doInBackground() 
12-20 10:32:11.194: E/AndroidRuntime(357): at android.os.AsyncTask$3.done(AsyncTask.java:200) 
12-20 10:32:11.194: E/AndroidRuntime(357): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) 
12-20 10:32:11.194: E/AndroidRuntime(357): at java.util.concurrent.FutureTask.setException(FutureTask.java:124) 
12-20 10:32:11.194: E/AndroidRuntime(357): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) 
12-20 10:32:11.194: E/AndroidRuntime(357): at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
12-20 10:32:11.194: E/AndroidRuntime(357): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068) 
12-20 10:32:11.194: E/AndroidRuntime(357): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561) 
12-20 10:32:11.194: E/AndroidRuntime(357): at java.lang.Thread.run(Thread.java:1096) 
12-20 10:32:11.194: E/AndroidRuntime(357): Caused by: java.lang.VerifyError: com.akilli.ticaret.source.Sources 
12-20 10:32:11.194: E/AndroidRuntime(357): at com.akilli.ticaret.Main$RestRequ.doInBackground(Main.java:130) 
12-20 10:32:11.194: E/AndroidRuntime(357): at com.akilli.ticaret.Main$RestRequ.doInBackground(Main.java:1) 
12-20 10:32:11.194: E/AndroidRuntime(357): at android.os.AsyncTask$2.call(AsyncTask.java:185) 
12-20 10:32:11.194: E/AndroidRuntime(357): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
12-20 10:32:11.194: E/AndroidRuntime(357): ... 4 more 
12-20 10:32:13.064: E/WindowManager(357): Activity com.akilli.ticaret.Main has leaked window [email protected] that was originally added here 
12-20 10:32:13.064: E/WindowManager(357): android.view.WindowLeaked: Activity com.akilli.ticaret.Main has leaked window [email protected] that was originally added here 
12-20 10:32:13.064: E/WindowManager(357): at android.view.ViewRoot.<init>(ViewRoot.java:247) 
12-20 10:32:13.064: E/WindowManager(357): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148) 
12-20 10:32:13.064: E/WindowManager(357): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91) 
12-20 10:32:13.064: E/WindowManager(357): at android.view.Window$LocalWindowManager.addView(Window.java:424) 
12-20 10:32:13.064: E/WindowManager(357): at android.app.Dialog.show(Dialog.java:241) 
12-20 10:32:13.064: E/WindowManager(357): at com.akilli.ticaret.Main$RestRequ.onPreExecute(Main.java:111) 
12-20 10:32:13.064: E/WindowManager(357): at android.os.AsyncTask.execute(AsyncTask.java:391) 
12-20 10:32:13.064: E/WindowManager(357): at com.akilli.ticaret.Main$1.onClick(Main.java:50) 
12-20 10:32:13.064: E/WindowManager(357): at android.view.View.performClick(View.java:2408) 
12-20 10:32:13.064: E/WindowManager(357): at android.view.View$PerformClick.run(View.java:8816) 
12-20 10:32:13.064: E/WindowManager(357): at android.os.Handler.handleCallback(Handler.java:587) 
12-20 10:32:13.064: E/WindowManager(357): at android.os.Handler.dispatchMessage(Handler.java:92) 
12-20 10:32:13.064: E/WindowManager(357): at android.os.Looper.loop(Looper.java:123) 
12-20 10:32:13.064: E/WindowManager(357): at android.app.ActivityThread.main(ActivityThread.java:4627) 
12-20 10:32:13.064: E/WindowManager(357): at java.lang.reflect.Method.invokeNative(Native Method) 
12-20 10:32:13.064: E/WindowManager(357): at java.lang.reflect.Method.invoke(Method.java:521) 
12-20 10:32:13.064: E/WindowManager(357): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
12-20 10:32:13.064: E/WindowManager(357): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
12-20 10:32:13.064: E/WindowManager(357): at dalvik.system.NativeStart.main(Native Method) 

Я бы очень признателен за помощь, я вероятно, сделал новобранец ошибку, и причина, это говорит о том, что окно является утечка, вероятно, потому, что он выходит из строя, прежде чем он даже смог уволить DialogBox.

+0

Возможный дубликат [Код, который раньше работал, больше не работает для уровня api ниже 11 - crash doInBackground] (http://stackoverflow.com/questions/20700379/a-code-that-used-to -work-works-no-more-for-api-level-lower-than-11-crash-doinb) – laalto

+0

@laalto - это способ для меня «знать», что код больше не работает для api leve ниже 11 ? как я могу идти в ногу и не делать большой беспорядок? –

+0

Android Lint обычно отлично справляется с предупреждением о вещах, которые недоступны в вашем minSdkLevel. Поэтому обратите внимание на предупреждения и регулярно запускайте полный линт проекта. – laalto

ответ

1

Вы, вероятно, использовать некоторые библиотеки, которая не поддерживает Android < API 11

В будущем, поиск StackOverflow для вашего Java Exception. Getting "Caused by: java.lang.VerifyError:"

+0

Я использую android-support-v7-appcompat и/или v4, и на самом деле я не использую библиотеку для этого блока кода –

+0

, но мои библиотеки правильно упорядочены: –

 Смежные вопросы

  • Нет связанных вопросов^_^