gpt4 book ai didi

android - Android : Android App is not responding, close it?

转载 作者:行者123 更新时间:2023-12-03 08:14:12 25 4
gpt4 key购买 nike

我有一个将数据发送到服务器的应用程序,有时会出现以下消息: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;
}

最佳答案

如果在按钮上单击几次,则启动几个asyncTask,我建议:

  • 避免多个任务:WAITING上一个执行结束
  • 使用以下代码启动任务:

  • 编码:
    myTask = new GetDeviceLogTask();
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
    myTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, (Void[]) null);
    else
    myTask.execute((Void[]) null);

    编辑:

    好的,我认为您正在做主线程上的许多事情,这些事情通常仅用于更新用户界面,并且可能不用于计算。因此,请尝试在异步任务内移动 Correccion().IsReachable1():
    class UpdateCandidatos extends AsyncTask<String, String, String> {

    protected String doInBackground(String... args) {

    if (!Titulacion.IsReachable1(getApplicationContext())) {
    return null;
    }

    Correccion();

    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;
    }
    }

    关于android - Android : Android App is not responding, close it?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19292117/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com