如何加速android异步任务执行?

时间:2013-06-08 10:00:25

标签: android

我是android的初学者,并制作了一个向tomcat web服务器发送REST http请求的android应用程序。在LAN中运行的tomcat Web服务器。应用程序不需要互联网执行。所有REST HTTP请求都在LAN / WIFI中执行。

问题是REST请求在android中执行得很慢。与IOS相同的应用程序,当从iPad发送REST请求时,它执行速度非常快且速度不慢。在ios中,我们直接在按钮点击时发送REST HTTP请求。

我知道我们无法在Android中从UI进行网络操作,因为它给出了这个“android.os.NetworkOnMainThreadException”。

所以我使用asyn任务来执行对服务器的发送请求。 当我发送来自android 4.1 samsung平板电脑的REST http请求时,当我尝试发送另一个请求时,第一个请求会很快执行,但它会变慢。

以下是我的活动代码

    public class RestActivity extends Activity {


public void btnSendRequestClick(View view)
{
    HttpUriRequest objHttpURL = null;
    objHttpURL = new HttpGet(url);
    objHttpURL.addHeader("typ", "device");

    RESTAsyncTask objAsyncTask = new RESTAsyncTask();
    objAsyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,
                    objHttpURL);

}

class RESTAsyncTask extends AsyncTask<HttpUriRequest, Void, String> {

        @Override
        protected String doInBackground(HttpUriRequest... params) {

            HttpClient httpClient = new DefaultHttpClient();
            // HttpResponse response =
            // httpClient.execute(sendHttpURL,
            // localContext);

            try {
                HttpResponse response = httpClient.execute(params[0]);
            } catch (ClientProtocolException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            return null;
        }

    };

}

我尝试下面的代码但结果相同。

if (android.os.Build.VERSION.SDK_INT > 9) {
            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
                    .permitAll().build();
            StrictMode.setThreadPolicy(policy);
        }

当我们获取需要互联网连接的执行请求时,延迟是可以接受的,就像我们从在线获取推文json数据一样。在这种情况下,速度无关紧要。但我的应用程序需要快速执行REST http请求。

如果有人知道如何解决这个问题,请帮助我。

0 个答案:

没有答案