我需要在单击按钮时进行api调用。因此,我按照以下方式进行操作。
btn.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
try
{
HttpResponse apiResponse = mySingleTonehttpClient.execute(new HttpGet(Url));
HttpEntity resEntity = apiResponse.getEntity();
InputStream instream = resEntity.getContent();
String result = convertInputStreamToString(instream);
}
}
如果我在清单文件中设置targetSDKVersion = 8,则此代码工作正常。但是给我targetSDKVersion = 11的网络主线程错误。有人可以建议我该怎么办?
谢谢,
杰伊
原因是您不应该在UI线程中做可能花费很长时间的事情。因为这样做会导致UI被阻止,并且您的应用程序将滞后。
这就是为什么您应该使用Worker Thread或AsyncTask进行网络IO的原因。您可以在Android开发者指南中阅读有关如何使用它们以及它们如何与UI线程交互的更多信息。
您不应该在应用程序的主/ UI线程上进行网络调用。您可以启动将在单独的线程而不是UI线程中运行的新工作线程。