【问题标题】:ProgressDialog not showing while uploading images into server with StrictMode.ThreadPolicy使用 StrictMode.ThreadPolicy 将图像上传到服务器时没有显示 ProgressDialog
【发布时间】:2017-10-03 09:18:05
【问题描述】:

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

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

{

     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();
    }

}

}

【问题讨论】:

  • 能贴出代码吗??
  • 我刚刚发布了我的代码。谢谢

标签: java android progressdialog


【解决方案1】:

如果您在 UI 线程中访问网络,则会显示错误。您不能在主线程中进行网络操作。最好使用工作线程或 ayntask。但是如果你愿意接受后果,并且必须在主线程上进行网络操作,你可以覆盖默认行为:

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

StrictMode.setThreadPolicy(policy); 

【讨论】:

  • 是否意味着使用 StrictMode.ThreadPolicy 会取消所有 UI 操作?
  • 不,它不会。这一行允许您在 UI 线程本身中进行网络调用,从而完成您的工作。但是在 UI 线程中进行网络调用并不好,可能会导致问题。
  • 自从我的老板看到你的 cmets 后,他让我现在做 Asynctask,它工作正常。我只是假设有某种机会或选项可以在不使用 Asynctask 的情况下执行任务。而且我真的不希望对我的问题持否定态度。还是谢谢你
  • 创建一个 asyntask 或一个简单的线程处理程序也可以工作。无论如何,如果我帮助你,请为这个答案投票
  • 我投了 3 票反对。无论如何我的问题有什么问题?我只是想知道,以便下次我能做对。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-14
  • 2011-10-08
  • 2012-01-19
  • 2014-02-09
  • 2013-10-29
相关资源
最近更新 更多