2016-04-13 2 views
2

J'essaie de comprendre quelle est la cause de ce crash lors du téléchargement sur le seau Amazon S3.Android Amazon S3 Télécharger Crash

Log est:

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) 

Y at-il quelque chose de mal sur mon code? Et si jamais comment puis-je intercepter cette erreur afin que mon application cesse de se bloquer et annule simplement ma tâche de téléchargement.

BTW.

Cet accident est intermittent et le ratio est de 1 sur 5 synchronisation réussie

+0

"Ce crash est intermittent et le ratio est de 1 sur 5" peut-il parfois fonctionner? –

+0

@LazarK oui sur 5 tentatives, il se bloque seulement une fois. – Janwel

+0

Quelle version d'AWS SDK utilisez-vous? – tedder42

Répondre

4

Cela ne semble pas être quelque chose que vous faites, il est à l'intérieur du code SDK AWS. L'implication de cette NPE est un réseau floconneux. It's been reported to Amazon on github (et confirmed in another ticket) et il semble revenir en arrière une version dans le SDK (v2.2.13) peut aider.

Cela aussi makes sense given the changes made in 2.2.14, which are related to S3 transfer and the network.

Je suggère de suivre ces billets (s'il vous plaît ne pas +1). Il est raisonnable de s'attendre à ce qu'ils réparent dans un délai d'une semaine.

+1

J'ai le regret de vous informer que la version 2.2.13 ne résout pas le problème. – Lisandro

1

Voici une solution de contournement jusqu'à ce que le bug est corrigé, le feu juste cela dans votre application de onCreate, ou bien avant toute activité de téléchargement commence:

/** 
* work around for a bug: 
* http://stackoverflow.com/questions/36587511/android-amazon-s3-uploading-crash 
*/ 
public static void startupTranferServiceEarlyToAvoidBugs(Context context) { 
    final TransferUtility tu = new TransferUtility(
      new AmazonS3Client((AWSCredentials)null), 
      context); 
    tu.cancel(Integer.MAX_VALUE - 1); 
} 

essentiellement ce que cela fait est de dire la TransferService pour démarrer et initialiser Ce sont des variables membres qui ne pénètrent pas dans la condition où elles essaient de servir les commandes avant qu'elles ne soient prêtes.