0

onCreate()以两种不同的方式执行几乎相同的代码(除了 return 语句):

  • 一次在线程中(有效)
  • 一次在 AsyncTask 中

不知何故,甚至无法调试 AsyncTask 中引发的异常...您知道为什么此代码在 AsyncTask 中不起作用以及为什么我无法调试 de Exception 吗?(它不作为变量存在)

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