gpt4 book ai didi

android - AsyncTask 一开始挂起

转载 作者:行者123 更新时间:2023-11-29 21:45:05 25 4
gpt4 key购买 nike

AsyncTask 在 Android 4.x 中运行良好,但不适用于 Android 2.3.6。我已经使用物理移动设备逐步调试了 Android 2.3.6。

它卡在这里:

myTask = new GetDataFromServer();

GetDataFromServerAsyncTask 的类。

这是怎么回事?

下面是我的代码,我在我的代码中只使用了 1 个 AsyncTask 并从服务器接收消息。就这样。

class GetDataFromServer extends AsyncTask<String, String, String>
{

protected void onPreExecute ()
{

progressDialog1=ProgressDialog.show(MainActivity.this, "Loading data", "Please wait...",true);
}
protected String doInBackground(String... params)
{

String resulttxt="";
try {

serverIp = InetAddress.getByName("192.168.1.123");


int serverPort=31000;


Socket clientSocket=new Socket(serverIp,serverPort);

BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream()));
bw.write(params[0]);
bw.flush();


BufferedReader br=new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));


resulttxt=br.readLine();
if(resulttxt.contains("OK"))
{
publishProgress(resulttxt);

}
else
{
publishProgress(resulttxt);
clientSocket.close();
bw.close();
br.close();
return null;

}
resulttxt="";
resulttxt=br.readLine();
resulttxt=resulttxt.trim();


clientSocket.close();

} catch (IOException e) {

if(Status_txt!=null)
Status_txt.append( "Server is done.");
}
catch (NetworkOnMainThreadException e){
if(Status_txt!=null)
Status_txt.append( "NetworkOnMainThreadException");
}

return resulttxt;


}
protected void onProgressUpdate(String...inStr){

String[] strData=inStr[0].split("_");
String szTemp="Last Purchase Date: ";


szTemp+=strData[1];

szTemp+=" ,Valid days: ";
szTemp+=strData[2];
//Status_txt.setText(szTemp);
if(Status_txt!=null)
Status_txt.setText("You Are The Super User");

}
protected void onPostExecute(String data) {
tl_prediction2.removeAllViews();


if (data == null)
{

}
else {


if((data.contains("#")==true) || (data.contains("*")==true)
||data.contains("&")==true)
{




String[] arrayTmp=data.split("#");
for(Integer i=0;i<arrayTmp.length;i++)
{
String[] SubArrayTmp=arrayTmp[i].split("_");

tl_prediction2.addView(generateRow(4,SubArrayTmp));

}
}

}
progressDialog1.dismiss();
}

};

最佳答案

由于您没有发布任何代码,我只能给您一些随机可能的解决方案:

  1. 可能是您的 AsyncTask 花费了很多时间来下载。尝试在 doInBackground()

  2. 中使用 android.os.Process.setThreadPriority(9) 提高其优先级
  3. 检查您的代码中是否有其他先前运行的长 AsyncTask。默认情况下,AsyncTask 在单个后台线程上运行。这意味着除非您之前的 AsyncTask 完成,否则您的 AsyncTask 任务不会执行。要允许并行执行,请使用 executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params)。您可以阅读更多 here

  4. 检查 list 中的互联网和其他权限。这主要是人们犯错误的地方。

关于android - AsyncTask 一开始挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16095645/

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