0

実質的に同一のコード (return ステートメントを除く) をonCreate()2 つの異なる方法で実行しています。

  • スレッドに1回(それは機能します)
  • そして AsyncTask で 1 回

どういうわけか、AsyncTask でスローされた例外はデバッグすることさえできません...なぜこのコードが AsyncTask で機能しないのか、なぜ例外をデバッグできないのか分かりますか? (変数としては存在しません)

public class TrainingProgressActivity extends ActivityTemplate {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_training_progress);        

        // the not working AsyncTask variant
        new ProgressGetterTask().execute("");

        // the working Thread variant
        new Thread(new Runnable() {
        public void run() {
            try {
                RestTemplate restTemplate = RestTemplateFactory.createRestTemplate();
                FeatureSetCollectionProgress i = restTemplate.postForObject(URLHelper.BASE_PATH+"training/progress", getDevice(), FeatureSetCollectionProgress.class);
                System.out.println(i.getMobilityProgress().get(0).getTransportationMeanType().toString());
            } catch(Exception e) {
                System.out.println("ex");
                e.printStackTrace();
            }
        }}).start();
    }

    /**
     * ProgressGetterTask. (not working ???)
     */
    private class ProgressGetterTask extends AsyncTask<String, FeatureSetCollectionProgress, FeatureSetCollectionProgress> {

        protected FeatureSetCollectionProgress doInBackground(String... urls) {
            try {
                RestTemplate restTemplate = RestTemplateFactory.createRestTemplate();
                return restTemplate.postForObject(URLHelper.BASE_PATH+"training/progress", getDevice(), FeatureSetCollectionProgress.class);
            } catch(Exception e) {
                e.printStackTrace();
                return null; // setting breakpoint here, 'e' cannot be resolved to a variable.
            }
        }

        protected void onPostExecute(FeatureSetCollectionProgress featureSetCollectionProgress) {
            if(featureSetCollectionProgress!=null) {

            } else {

            }
        }
    }
}
4

0 に答える 0