2014-01-24 3 views
4

작업, 2.3 호출하기 :AsyncTask.doInBackground하지가 나는이 AsyncTask를이 4.0 이상

public static void login(final String email, final String password, 
      final String token, final SocketHandler handler) { 
     execute(new AsyncTask<Void, Void, Void>() { 

      @Override 
      protected Void doInBackground(final Void... params) { 
       Log.d("ACEPTAR", "DOINBACKGROUND"); 
       String url = handler.servidor.getUrl(); 
       url += "/login-usuario"; 
       String str; 
       try { 
        str = postResponseFromServer(url, "mail", email, "pass", 
          password, "tipo", "1", "token", token); 
        Log.d("ACEPTAR", str); 
        final CustomJSONObject object = new CustomJSONObject(str); 
        final CustomJSONObject object2 = new CustomJSONObject(); 
        object2.put("datos", object); 
        final CustomJSONArray array = new CustomJSONArray(); 
        array.put(object2); 
        handler.on("resultado-login", array); 
       } catch (final Exception ex) { 
        ex.printStackTrace(); 
        handler.on("error-login", new CustomJSONArray()); 
       } 
       return null; 
      } 
     }); 
    } 

    @SuppressLint("InlinedApi") 
    private static void execute(final AsyncTask<Void, Void, Void> task) { 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 
      task.executeOnExecutor(AsyncTask.SERIAL_EXECUTOR); 
     } else { 
      task.execute(); 
     } 
    } 

내가 3G에 그것을 할 시도를 항상 작동합니다. 그런 다음 Wi-Fi에 연결합니다. AsyncTask는 4.0 이상에서는 호출되지만 2.3.7에서는 호출되지 않습니다.

내가 누락 된 항목이 있습니까?

+0

게시 한 코드에서 'doInBackground()'메소드 호출은 wifi 또는 모바일 데이터에 연결되어있는 것에 의존하지 않습니다. 질문을 명확히하고 싶을 수도 있습니다 –

+0

그게 저를 미치게합니다. – razielsarafan

+0

항상 재현 가능합니까? Wi-Fi를 통해 시도 할 때마다 실패합니다. 다른 앱 (예 : 웹 브라우저)에 Wi-Fi를 사용해 보셨습니까? 여러 기기에서 모든 기기에서 발생했는지 확인하려고 했습니까? – nKn

답변

0

별도의 스레드를 만들고 거기에 물건을 넣고 Activity.runInUiThread()에 결과를 게시하십시오. 거기에 문제가 있는지보십시오. 아무런 문제가 없다면 아마도 AsyncTask 버그 때문일 것입니다.

관련 문제