我已經創建了一個下載圖片的組件(在Android端),我想發回有關該應用的圖片(到JS端)的大小細節。從AsyncTask postExecute返回回調響應:Nullpointerexception
現在,我可以放心地說,我可以從JS調用我的組件,它會回覆數據,但只要我添加了Async
元素從URL下載圖像,閱讀並響應我得到NullpointerException
只要我打電話給我的callback.invoke("response text");
我有問題的代碼是:
public void loadImage(final String url, final Callback onLoadCallback) {
...
new AsyncTask<String, Void, Void>() {
@Override
protected Void doInBackground(String... url) {
try {
theImage = Glide.with(getReactApplicationContext()).load(url[0]).asBitmap().into(-1, -1).get();
}
catch ...
return null;
}
@Override
protected void onPostExecute(Void dummy) {
if (null != theImage) {
onLoadCallback.invoke("Success"); //<== THIS LINE HERE
}
}
}.execute(url);
...
}
現在,我明白那是因爲我想在SEP線程通過回調回返回到主線程,但我不確定我該如何獲得我想回到JS方面的信息?!這是我第一次嘗試在RN的組件,所以要善良! :)
額外的信息 - 我的陣營模塊:
var MY_Image = require('NativeModules').MYImage;
var myimage = {
loadImage(url, onLoad) {
MY_Image.loadImage(url, onLoad)
},
};
module.exports = myimage;
然後在我的陣營應用視圖:
...
componentDidMount: function() {
myImage.loadImage('[URL to Image]',onLoad=> {
console.log('Success: '+onLoad);
});
}
你的回調函數可能首先是空的。你甚至在調用AsyncTask之前是否嘗試過測試它是否爲空? – NoChinDeluxe
我已經做了更多的工作,我*可能會*覆蓋@drschultz - 只是檢查我的解決方案,我希望能夠很快發佈更多信息! – scgough
在@johanneslumpe的'react-native-fs'組件中找到了一些東西,它幫助我找出了一些東西 – scgough