欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android网络请求完成之后更新UI的几种方法

程序员文章站 2022-03-10 15:51:13
...

首先我们需要明确几点:
1、网络请求因为是耗时操作,不能再主线程中进行,所以只能在子线程中进行
2、更新UI是必须在主线程中进行的
所以,我们要在网络请求之后更新UI需要做以下几个步骤:
1、在主线程中new一个子线程
2、在子线程中进行网络请求
3、网络请求结束之后更新UI
对于上面的3个步骤有两种方法可以供选择,一个是采用Thread和Handler,另外一种就是采用AsynTask。
(1)对于Thread加Handler,就是在子线程(Thread)中完成加载之后,利用Handler将网络请求得到的数据放在Message中,并在Handler中实现UI更新。
(2)对于AsynTask,就是要重写doInBackground()方法完成网络加载这样的耗时操作,重写onPostExecute()方法,因为onPostExecute()实在主线程中进行的,所以在onPostExecute()中进行UI的更新。下面的代码是我的一个例子,首先是类BitmapTask继承自AsyncTask
 

        new AsyncTask(){
            /**
             * 更新UI的操作,这里面的内容是在UI线程里面执行的
             */
            @Override
            protected void onPostExecute(Object result) {
                super.onPostExecute(result);
                sdataList.addAll(dataList);
                myAdapter.notifyDataSetChanged();
            }
            /**
             * 耗时操作,这里面的内容Android系统会自动为你启动一个新的线程执
             */
            @Override
            protected Object doInBackground(Object... arg0) {
               // String name = arg0[0].toString();
                //String number = arg0[1].toString();
                dataList = RankingUtil.getFundRankingList("","2008-11-04","2010-11-10","");
                return dataList;
            }}.execute();

 

相关标签: andriod