使用 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);
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);