不带asynctask的Android网络api调用

问题描述 投票:0回答:2

我需要在单击按钮时进行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的网络主线程错误。有人可以建议我该怎么办?

谢谢,

杰伊

android android-asynctask android-2.2-froyo
2个回答
1
投票

原因是您不应该在UI线程中做可能花费很长时间的事情。因为这样做会导致UI被阻止,并且您的应用程序将滞后。

这就是为什么您应该使用Worker Thread或AsyncTask进行网络IO的原因。您可以在Android开发者指南中阅读有关如何使用它们以及它们如何与UI线程交互的更多信息。


0
投票

您不应该在应用程序的主/ UI线程上进行网络调用。您可以启动将在单独的线程而不是UI线程中运行的新工作线程。

© www.soinside.com 2019 - 2024. All rights reserved.