我有一个向服务器发送数据的应用程序,有时会出现以下消息:Android 应用程序没有响应,关闭它?(不知道英文是不是一样)
很难看到日志,因为它大约发生在 20 台设备中的一台中,当时它们都在工作,而我当时看不到日志。我认为问题可能出在将数据发送到服务器的 Asynctask 函数上。
这是功能:
class UpdateCandidatos extends AsyncTask<String, String, String> {
protected String doInBackground(String... args) {
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    params.add(new BasicNameValuePair("id", Nombres.getPID()));
    params.add(new BasicNameValuePair("test", nombre));
    params.add(new BasicNameValuePair("pregunta", npregunta));
    params.add(new BasicNameValuePair("bateria", levelstring));
    params.add(new BasicNameValuePair("correctas", correctasString));
    params.add(new BasicNameValuePair("errores", fallosString));
    JSONObject json = jsonParser.makeHttpRequest(url_update,
            "POST", params);
    try {
        int success = json.getInt(TAG_SUCCESS);
        if (success == 1) {
        } else {
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }
    return null;
}
}
当它被调用 asynctask 函数时:
bNext.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
    count++;
    if (radBotA.isChecked()) {
        Respuestas[posicion] = "A";
    }
    else if (radBotB.isChecked()) {
        Respuestas[posicion] = "B";
    }
    else if (radBotC.isChecked()) {
        Respuestas[posicion] = "C";
    }
    else if (radBotD.isChecked()) {
        Respuestas[posicion] = "D";
    }
    else {
        Respuestas[posicion] = "";
    }
    if (Titulacion.IsReachable1(getApplicationContext())) {
        Correccion();
        new UpdateCandidatos().execute();
    }
}
});
该消息会在一段时间后出现,即使您单击任何按钮,该应用程序仍会继续被阻止。我的 asynctask 功能有什么问题吗?我该如何解决这个问题?
编辑:Correccion() 正在比较 2 个数组。
public void Correccion(){
                correctas = 0;
                fallos = 0;
                sinresponder  = 0;
        for(int posicion=0;posicion<=nPreguntas-1;posicion++){
if(Respuestas[posicion].equals(RespuestasC[posicion])){
    correctas++;
}
else if(Respuestas[posicion].equals("")){
    sinresponder++;
}
else{
    fallos++;
}
        }
        correccion++;
        correctasString = String.valueOf(correctas);
        fallosString = String.valueOf(fallos);
            }
isReachable() 用于了解设备是否可以到达服务器。
public static boolean IsReachable1(Context context) {
        final ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        final NetworkInfo netInfo = connMgr.getActiveNetworkInfo();
        boolean isReachable = false;
        if (netInfo != null && netInfo.isConnected()) {
            try {
                URL url = new URL("http://10.0.0.15/");
                HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
               urlc.setConnectTimeout(1 * 200);
                urlc.connect();
                isReachable = (urlc.getResponseCode() == 200);
            } catch (IOException e) {
                Log.e("TAG", e.getMessage());
            }
        }
        return isReachable;
    }