ProgressDialog
仅在我发送文字时显示,但是当我发送图片时,它给了我一个错误,告诉我有很多活动正在运行,或者应用无法处理所有活动,解决方案是在调用这些任务之前添加StrictMode.ThreadPolicy
但问题是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();
}
}
}
答案 0 :(得分:0)
如果您在UI线程中访问网络,则会显示错误。您无法在主线程中执行网络操作。最好使用工作线程或ayntask。但是如果你愿意接受后果,并且必须在主线程上进行网络操作,你可以覆盖默认行为:
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);