2017-10-25 2 views
0

私はonPostExecute()からdoInBackground()仕上げと値の復帰後、私は戻ってMainActivityに値を取得するためのインターフェイスを使用したい、画像認識のためのAsyncTaskを持って、私はなぜわかりません私はデバッガ、任意のアイデアを実行すると戻りtmpはスキップされますか?はAsyntaskにPostExecuteに値を戻すことはできませんアンドロイド

private class ProcessImageLocally extends AsyncTask<ImageItem, Void, ImageItem>{ //+++++++++++++++++++++++++++++++++++++++ 
    public AsyncReponseForImageItem response = null; 

    @Override 
    protected void onPreExecute() { 
     localProcessBegin();   //Process data locally 
    } 

    @Override 
    protected ImageItem doInBackground(ImageItem... params) { 
     //**************processing locally***************** 
     try { 
      Bitmap bm = BitmapFactory.decodeFile(params[0].getBitmapPath()); 

      Bitmap croppedBitmap = getBitmap(getApplicationContext(), INPUT_SIZE, bm); 
      final List<Classifier.Recognition> results = classifier.recognizeImage(croppedBitmap); 

      String resultStr = results.toString(); 
      String trimResult = resultStr.substring(resultStr.indexOf("[")+1,resultStr.indexOf("]")).trim(); 

      String localId = params[0].getId(); 
      trimResult = trimResult.substring(0,trimResult.indexOf(")")) + " likely)"; 

      Bitmap thumbnail = getBitmap(getApplicationContext(), 50, bm); 
      ImageItem tmp = new ImageItem(localId, imgToString(thumbnail), trimResult); 
      return tmp;  //Skip to the outside return 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 

    @Override 
    protected void onPostExecute(ImageItem imageItem) { 
     response.asyncFinish(imageItem); 
    } 
} 
+2

catchでIOExceptionがスローされた場合、デバッグモードでチェックしましたか?たぶんtryブロックで何か間違っているかもしれません。 – BVantur

+0

ログキャットを提供できますか? –

答えて

0

私は帰りのTMPがスキップされ、なぜ私は、デバッガを実行すると

あなたのコードは、任意のexceptionreturn tmp;の前に現れた場合、意味try catch、後のすべてのコード内にあることを確認していませんエラーのある行はもう実行されません。つまり、return tmpの上に何かが間違っていると言われています。

exceptionが発生すると、e.printStacktraceと書かれたcatchブロックにアプリがジャンプします。これにより、logcatにエラーが書き込まれます。

その後、catchブロックで行うべきことがなくなったので、return null;になります。

tryブロックの内部で何が起こるのかを確認し、エラーを修正してください。

関連する問題