使用 StrictMode.ThreadPolicy 将图像上传到服务器时未显示 ProgressDialog

ProgressDialog not showing while uploading images into server with StrictMode.ThreadPolicy

ProgressDialog 仅在我发送文本时显示,但当我发送图像时,它给了我一个错误,告诉我有很多活动 运行 或应用程序无法处理所有它,解决方案是在调用这些任务之前添加 StrictMode.ThreadPolicy 但问题是 ProgressDialog 不再显示,这对于告诉用户正在进行的过程很重要。

我相信是 StrictMode.ThreadPolicy 导致 ProgressDialog 消失。我没有使用 Asynctask 这就是为什么我还没有在 Internet 上找到解决方案的原因,因为大多数人都在使用它。我也打算用Asynctask但是我老板不同意,怕毁了app

{

     private void upLoadImage(String path){
    StrictMode.ThreadPolicy policy = new 
    StrictMode.ThreadPolicy.Builder().permitAll().penaltyDialog().build();
    StrictMode.setThreadPolicy(policy);
    uploadMedia(path);}}

{

    private void uploadMedia(String path) {
    String ImageName = "image_name";
    String ImagePath = "image_path";

  try {
    String charset = "UTF-8";
    File uploadFile1 = new File(path);
    String requestURL= "http://myurl";
    MultipartUtility multipart = new MultipartUtility(requestURL,   

 charset);
 multipart.addFormField(ImageName, "iName");
 multipart.addFormField(ImagePath, "iPath");
 multipart.addFilePart("uploadedfile", uploadFile1);
 List<String> response = multipart.finish();
  Log.v("rht", "SERVER REPLIED:");
 for (String line : response) {
      Log.v("rht", "Line : "+line);
       if(line=="true"||line=="Saved"){
                progressDialog.dismiss();
       }
   }

       // Toast.makeText(this, ""+response, Toast.LENGTH_SHORT).show();
        finish();
    } catch (Exception e) {
        e.printStackTrace();
    }

}

}

如果您在 UI 线程中访问网络,错误是 shown.You 无法在主线程中执行网络操作 thread.It 最好使用工作线程或 ayntask。但如果你愿意接受后果,并且必须在主线程上进行网络操作,你可以覆盖默认行为:

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();

StrictMode.setThreadPolicy(policy);