Android 如果不使用UI线程,则无法将图像上载到服务器
嘿,我尝试了上面的代码将图像上传到服务器上。如果我使用代码中提到的选项2,它运行良好。但是如果我把代码放在选项2上,它会给我这个错误Android 如果不使用UI线程,则无法将图像上载到服务器,android,Android,嘿,我尝试了上面的代码将图像上传到服务器上。如果我使用代码中提到的选项2,它运行良好。但是如果我把代码放在选项2上,它会给我这个错误 public void upload_prescription() { dialog = ProgressDialog.show(MainActivity.this, "","Uploading file...", true); new Thread(new Runnable() { public void run
public void upload_prescription()
{
dialog = ProgressDialog.show(MainActivity.this, "","Uploading file...", true);
new Thread(new Runnable()
{
public void run()
{
runOnUiThread(new Runnable()
{
public void run()
{
// option1 upload_image.uploadFile(uploadFilePath);
}
}
);
//option2 upload_image.uploadFile(uploadFilePath);
deleteImageFromGallery(delete_image_id + "");
}
}
).start();
}
我认为选项2更好,因为它提供了一个单独的线程来完成任务,尽管它不能正常工作,但它不能工作,因为您(如错误所示)没有生成新线程来执行网络操作,而是在主线程上执行网络调用。您的选项2看起来就像普通的方法调用。我看这里没有生成线程。你说的普通方法是什么意思。你只是在UI线程上调用一个方法。您没有生成一个线程来执行此工作。您认为我的选项1和选项2在ui线程上运行调用runOnUiThread会强制您的操作在主线程上运行吗。你不能用它来执行上传。如果删除runOnUiThread部分,则上载将在不同的线程上运行。
android.os.NetworkOnMainThreadException.