android程序从欢迎界面跳转到主菜单界面,主菜单界面初始化的数据要调用webservice获取,调用webservice是耗时操作。我用了Handler和Thread,但是效果都不理想。ProgressDialog要么不显示,要么滚轮不转动,要么显示一段时间后消失,单数据还是没有加载完,呈现出假死状态。我感觉初始化的代码写在OnCreate事件里并不合适,但也不知道怎么写才合适。希望大家能给一些代码参考,也请大家讲讲Handler和Thread的详细用法。谢谢!

解决方案 »

  1.   

    其实这个过程没有必要用handle来完成 AsyncTask 完全可以满足你的要求。AsyncTask 的核心函数为:protected Void doInBackground(Void... params)该函数中的代码将在非UI的线程中异步执行。 你将你需要执行的调用webservice获取数据的耗时操作放入这个函数中就可以达到异步的效果。当然在执行异步操作时,最好能弹出一个 waiting 的progressbar 让用户等待, 操作做完。这个progressbar 可以在 AsyncTask 的
      protected void onPreExecute() 函数中show (doInBackground 执行之前 在UI线程中调用)
      protected void onPostExecute(Void result) 函数中dimiss (doInBackground 执行完成后,在UI线程中调用)
      

  2.   

    我再请问一下,用线程或是AsyncTask的时候,ProgressDialog的滚轮只能滚几下,之后就停止了,请问这是为什么?谢谢!