【发布时间】:2016-04-19 14:29:08
【问题描述】:
我试图找出在 Amazon S3 存储桶上上传时导致崩溃的原因。
日志是:
Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean com.amazonaws.mobileconnectors.s3.transferutility.TransferService$NetworkInfoReceiver.isNetworkConnected()' on a null object reference
at com.amazonaws.mobileconnectors.s3.transferutility.TransferService.execCommand(TransferService.java:287)
at com.amazonaws.mobileconnectors.s3.transferutility.TransferService$UpdateHandler.handleMessage(TransferService.java:224)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.os.HandlerThread.run(HandlerThread.java:61)
我的代码有问题吗?
public AmazonTransferUtility uploadFileToAmazonS3(String data, Date date){
generateTextFileFromString(data, date);
File jsonFile = new File(getDataPath(), textName);
TransferObserver observer = transferUtility.upload(
textBucketName,
mUUID + File.separator + date.getTime() + textName ,
jsonFile
);
mListener.onAsyncStart();
observer.setTransferListener(new TransferListener() {
@Override
public void onStateChanged(int id, TransferState state) {
try {
if (state.toString().equals("COMPLETED")) {
deleteFile(textName);
if (mListener != null) {
JSONObject result = new JSONObject();
result.put("result", state.toString());
mListener.onAsyncSuccess(result);
}
}
else if (state.toString().equals("FAILED") ||
state.toString().equals("UNKNOWN")
){
mListener.onAsyncFail(id, state.toString());
}
else{
Log.i(TAG, "S3 TransferState :" + state.toString());
}
}catch (JSONException e){
Log.e(TAG, e.getLocalizedMessage());
}
}
@Override
public void onProgressChanged(int id, long bytesCurrent, long bytesTotal) {
if (bytesCurrent == bytesTotal){
Log.i(TAG, "Completed");
}
else{
Log.i(TAG, "Current bytes: " + bytesCurrent + " Of bytesTotal : " + bytesTotal);
}
}
@Override
public void onError(int id, Exception ex) {
mListener.onAsyncFail(id,ex.getMessage());
}
});
return this;
}
如果有的话,我怎样才能捕捉到这个错误,以便我的应用停止崩溃并取消我的上传任务。
顺便说一句。
崩溃是间歇性的,比率是五分之一的成功同步
【问题讨论】:
-
“那次崩溃是间歇性的,比率是 5 次成功同步中的 1 次”意味着它有时会起作用?
-
@LazarK 是的,在 5 次尝试中它只会崩溃一次。
-
您使用的是什么版本的 AWS 开发工具包?
-
编译 'com.amazonaws:aws-android-sdk-core:2.+' 编译 'com.amazonaws:aws-android-sdk-cognito:2.+' 编译 'com.amazonaws: aws-android-sdk-s3:2.+' 编译 'com.amazonaws:aws-android-sdk-ddb:2.+'
-
不显示您使用的版本,仅显示范围。不过,我猜测 2.2.14(头部)基于此。
标签: android amazon-web-services amazon-s3