插入图像获取异步错误

问题描述:

我想插入一张图片解析云,但我得到一个错误 这里是我的代码:插入图像获取异步错误

public void uploadImage() { 
File f = new File("/mnt/sdcard/test.jpg"); 
Bitmap bmp = BitmapFactory.decodeFile(f.getAbsolutePath()); 
ParseFile file = new ParseFile("test.jpg",bitmapToByteArray(bmp)); 
file.saveInBackground(); 
test = new ParseObject("Testing"); 
test.put("images", file); 
test.saveInBackground();  
} 

而且从logcat的错误代码:

02-25 12:08:53.259: E/AndroidRuntime(12444): FATAL EXCEPTION: AsyncTask #2 
02-25 12:08:53.259: E/AndroidRuntime(12444): java.lang.RuntimeException: An error occured while executing doInBackground() 
02-25 12:08:53.259: E/AndroidRuntime(12444): at android.os.AsyncTask$3.done(AsyncTask.java:200) 
02-25 12:08:53.259: E/AndroidRuntime(12444): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) 
02-25 12:08:53.259: E/AndroidRuntime(12444): at java.util.concurrent.FutureTask.setException(FutureTask.java:124) 
02-25 12:08:53.259: E/AndroidRuntime(12444): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) 
02-25 12:08:53.259: E/AndroidRuntime(12444): at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
02-25 12:08:53.259: E/AndroidRuntime(12444): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068) 
02-25 12:08:53.259: E/AndroidRuntime(12444): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561) 
02-25 12:08:53.259: E/AndroidRuntime(12444): at java.lang.Thread.run(Thread.java:1096) 
02-25 12:08:53.259: E/AndroidRuntime(12444): Caused by: java.lang.RuntimeException: This query has an outstanding network connection. You have to wait until it's done. 
02-25 12:08:53.259: E/AndroidRuntime(12444): at com.parse.ParseFile.assertNotRunning(ParseFile.java:126) 
02-25 12:08:53.259: E/AndroidRuntime(12444): at com.parse.ParseFile.save(ParseFile.java:264) 
02-25 12:08:53.259: E/AndroidRuntime(12444): at com.parse.ParseFile.save(ParseFile.java:258) 
02-25 12:08:53.259: E/AndroidRuntime(12444): at com.parse.ParseObject.deepSave(ParseObject.java:1527) 
02-25 12:08:53.259: E/AndroidRuntime(12444): at com.parse.ParseObject.save(ParseObject.java:924) 
02-25 12:08:53.259: E/AndroidRuntime(12444): at com.parse.ParseObject$5.run(ParseObject.java:957) 
02-25 12:08:53.259: E/AndroidRuntime(12444): at com.parse.ParseObject$5.run(ParseObject.java:954) 
02-25 12:08:53.259: E/AndroidRuntime(12444): at com.parse.BackgroundTask.doInBackground(BackgroundTask.java:39) 
02-25 12:08:53.259: E/AndroidRuntime(12444): at com.parse.BackgroundTask.doInBackground(BackgroundTask.java:1) 
02-25 12:08:53.259: E/AndroidRuntime(12444): at android.os.AsyncTask$2.call(AsyncTask.java:185) 
02-25 12:08:53.259: E/AndroidRuntime(12444): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
02-25 12:08:53.259: E/AndroidRuntime(12444): ... 4 more 

我不知道它是什么导致错误,请帮助我,并提前感谢

+1

我不知道这个API的想法,我还没有使用过它,我只是希望能推动你在正确的方向:-) – 2013-02-25 05:15:14

+0

谢谢哥哥 – user1708134 2013-02-25 05:16:40

我必须将它更改为这个

public void uploadImage() { 
     test = new ParseObject("Testing"); 
     File f = new File("/mnt/sdcard/test.jpg"); 

     Bitmap bmp = BitmapFactory.decodeFile(f.getAbsolutePath()); 
     file = new ParseFile("test.jpg",bitmapToByteArray(bmp)); 
     file.saveInBackground(new SaveCallback() { 

      @Override 
      public void done(ParseException e) { 
       // TODO Auto-generated method stub 

       test.put("images", file); 
       test.saveInBackground(); 
      } 
     }); 
} 

你想同时保存一个文件和一个包含它的对象 - 显然,它是不允许的通过你正在使用的框架。所以,要么不这样做,要么作为成功/完成的第一次通话回调进行后续通话。

这里是一对夫妇的相关链接(顺便说一句发现他们通过谷歌搜索除外):

​​

Why am I getting a "This object has an outstanding network connection" NSInternalInconsistencyException?

刚刚摆脱通话到file.saveInBackground()。保存对象将自动处理。