Closed NickIliev closed 6 years ago
@neddinn I was able to fully reproduce the issue and it seems related to nativescript-background-http and the way it broadcasts large data - it also appears only on devices running Android 7.1+.
Moving this issue to nativescript-background-http repository.
Steps to reproduce: - use this sample application on a device with Android 7.1 or greater (reproducible on Nexus 5x a.k.a. bullhead)
Error received:
System err: android.app.RemvoeServiceException: can't deliver broadcast
Issue traced back to the android-upload-service library used in the plugin. It happens because the test service https://httpbin.com/post responds with the contents of the uploaded file. If the contents are big enough, the native library will produce an exception.
To avoid this, please use another testing service that does not return the uploaded file in the response.
An issue has been logged in the native library repo - https://github.com/gotev/android-upload-service/issues/342
@lini Not so sure this is the issue. I am trying to upload files to Amazon S3 (which doesnt return the contents of the uploaded file), and I still encounter this error.
I get this too and I am not using httpbin. The service I upload to, just returns a lil bit of JSON...
Hi, Can you share some more details so we can try to reproduce the error - what plugin and android versions are you using? Can you provide us with sample code/test service URL so we can make some requests? Do you get the same exception as in the original issue description and if not, can you share the log output?
@lini I ended up getting past this issue by setting the large heap flag in the android manifest.
android:largeHeap="true"
Thanks for the provided solution. I am closing this issue, feel free to reopen if the problem persists.
Getting this issue even set the android:largeHeap="true"
I am having the same problem. Not Sure why sometimes is happening, and why sometimes it works as expected.
I just realize that the problems comes when converting to JSON :
function respondedHandler(e) { console.log('respondedHandler received ' + e.responseCode + ' code. Server sent: ' + e.data); set_mark_time(JSON.parse(e.data)); }
Any update on this I'm having the same issue
I solved this issue by move some logic outside the onComplete() function. Seem you must create single instruction to lighten the calculations. For example you must save in let or const your JSON.parse(), because as argument the single calculation is too heavy.
My working code:
this.$photoService.pickPhoto({ width:800, height: 800, lockSquare: false }, (file_path)=>{
this.waiter.start()
this.$store.commit('set_waiter', {prop: "progress", value: this.t("LOADING.PROGRESS_UPLOAD_IMAGE")})
let query = new Object({ company: this.$store.state.company_selected._key});
if(this.is_draft) query["draft"] = this.feed._key
else query["post"] = this.feed._key
let url = Array.from(this.$rawApi.POST_POST_PHOTO);
url[1] = this.$rawApi.getURL(url[1], query)
this.$rawApi.uploadImage(url, file_path,
// onProgress
(e)=>{
let perc:number = ~~(parseFloat(e.currentBytes) * 100 / parseFloat(e.totalBytes))
this.$store.commit('set_waiter', {prop: "progress", value: perc.toString() + " %"})
//self.progress ="progress.."
},
//onError
(e)=>{
},
//onComplete
(e)=>{
const json = JSON.parse(e.response.getBodyAsString());
let post = new Post(json.post);
this.feed = post;
this.$store.dispatch("updatePost", {post:post, is_draft:this.is_draft});
this.edit_mode = false;
}
)
})
},
From @neddinn on November 28, 2017 7:32
Tell us about the problem
The app crashes when trying to upload an image. Error:
Which platform(s) does your issue occur on?
Android
Please provide the following version numbers that your issue occurs with:
I'm using nativescript-background-http v3.0.0 & tns-core-modules v3.3.0
Please tell us how to recreate the issue in as much detail as possible.
This error is quite erratic but it mostly doesn't work, after taking a photo using camera plugin and saving or even selecting an image from the gallery, when I try to upload, it crashes the application and throws the aforementioned error.
Is there code involved? If so, please share the minimal amount of code needed to recreate the problem.
Copied from original issue: NativeScript/NativeScript#5098