视频上传占用了 android 中的所有带宽

Video upload eats up all the bandwidth in android

我可以在 android 中上传视频。为此,我将整个代码放在一个服务中,并在其中使用 AsyncTask 调用 doInBackground() 中的上传视频功能。下面是上传视频的代码:

    private String uploadFile(String filePath, String proid, String procat) {

        String responseString = null;

        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(Const_Url.FILE_UPLOAD_URL);

        try {
            AndroidMultiPartEntity entity = new AndroidMultiPartEntity(
                    new ProgressListener() {

                        @Override
                        public void transferred(long num) {

                            publishProgress((int) ((num / (float) totalSize) * 100));
                        }
                    });

            File sourceFile = new File(filePath);

            // Adding file data to http body
            entity.addPart("image", new FileBody(sourceFile));

            entity.addPart("project_id", new StringBody(proid));
            entity.addPart("user_id", new StringBody(userid));
            entity.addPart("video_type", new StringBody("in_store"));

            Log.d("background file path ", filePath);
            Log.d("background project id", proid);
            Log.d("background project cat", procat);
            Log.d("background user id", userid);

            totalSize = entity.getContentLength();
            httppost.setEntity(entity);

            // Making server call
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity r_entity = response.getEntity();

            int statusCode = response.getStatusLine().getStatusCode();
            if (statusCode == 200) {
                // Server response
                responseString = EntityUtils.toString(r_entity);
            } else {
                responseString = "Error occurred! Http Status Code: "
                        + statusCode;
            }

        } catch (ClientProtocolException e) {
            responseString = e.toString();
        } catch (IOException e) {
            responseString = e.toString();
        }

        return responseString;

    }

因此 AndroidMultiPartEntity 上传整个视频。

但问题是,如果在这期间我尝试对服务器进行 HTTP 调用,那么它只会等到视频上传完成 ()。

最好不要等到那个时候,而是尽快回复我。我认为视频上传服务会占用整个带宽,因此不会进行其他 HTTP 调用。

请提出一些解决方案。 TIA.

P.S。我试过了

Thread.currentThread().setPriority(Thread.MIN_PRIORITY);

降低该 AsyncTask 的优先级并提高其他 http 调用 (Asynctask) 的优先级。但徒劳无功

对于遇到这个问题的每个人,我都有解决方案。如果你想在服务的帮助下在后台上传一个非常大的文件(~500mb),请使用这个库: android upload service

我发现这非常容易集成,它还提供了许多附加功能,例如在通知栏中显示 进度条