Handler更新子线程数据+AayncTask实现异步执行任务

Handler更新子线程数据+AayncTask实现异步执行任务

1.viewpager+Fragment标签页联动

final ViewPager pager=(ViewPager)findViewById(R.id.pager);
        radioGroup = (RadioGroup)findViewById(R.id.radio);
        final ArrayList<Fragment> arrayList=new ArrayList<Fragment>();
        arrayList.add(new Frag_01());
        arrayList.add(new Frag_02());
        radioGroup.check(radioGroup.getChildAt(0).getId());
        pager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
            @Override
            public Fragment getItem(int i) {
                return arrayList.get(i);
            }

            @Override
            public int getCount() {
                return arrayList.size();
            }
        });

        radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                switch (checkedId){
                    case R.id.button:
                        pager.setCurrentItem(0);
                        break;
                    case R.id.button2:
                        pager.setCurrentItem(1);
                        break;
                }
            }
        });
        pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int i, float v, int i1) {

            }

            @Override
            public void onPageSelected(int i) {
                radioGroup.check(radioGroup.getChildAt(i).getId());
            }

            @Override
            public void onPageScrollStateChanged(int i) {

            }
        });

2.网络判断

创建NetWork类

 public static boolean isNetWork(Context context){
        ConnectivityManager connectivityManager=(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo info = connectivityManager.getActiveNetworkInfo();
        if (info != null) {
            return info.isAvailable();
        }
        return false;
    }

主页面进行判断

boolean netWork = MyNetWork.isNetWork(this);
        if (netWork) {
            Toast.makeText(this, "有网", Toast.LENGTH_SHORT).show();
        }else{
            Toast.makeText(this, "木有网啊", Toast.LENGTH_SHORT).show();
            AlertDialog.Builder builder= new AlertDialog.Builder(this);
            builder.setTitle("提示");
            builder.setMessage("设置网络连接");
            builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {

                }
            });
            builder.setNegativeButton("取消",null);
            builder.create().show();
        }

3.listview用Handler+子线程方式 请求数据并优化适配器

移除多余视图

 public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.frag_01,container,false);
        listView = (ListView)view.findViewById(R.id.listview);
        
        ViewGroup parent=(ViewGroup)view.getParent();
        //移除多余视图
        if (parent!=null){
            parent.removeView(view);
        }
        
        getData();
        return view;
    }

创建子线程

 private void getData() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    URL url=new URL(path);
                    HttpURLConnection conn=(HttpURLConnection)url.openConnection();
                    conn.setRequestMethod("GET");
                    conn.setConnectTimeout(5000);
                    if (conn.getResponseCode()==200){
                        InputStream inputStream = conn.getInputStream();
                        ByteArrayOutputStream bos = new ByteArrayOutputStream();
                        byte[] buffer = new byte[1024];
                        int len=0;
                        while ((len=inputStream.read(buffer))!=-1){
                            bos.write(buffer,0,len);
                        }
                        bos.close();
                        inputStream.close();
                        String json = bos.toString();
                        Message message=Message.obtain();
                        message.obj=json;
                        message.what=0;
                        handler.sendMessage(message);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }

            }
        }).start();
    }

Handler获取数据

@SuppressLint("HandlerLeak")
    Handler handler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if (msg.what==0){
                String json=(String)msg.obj;
                Gson gson=new Gson();
                JsonBean jsonBean = gson.fromJson(json, JsonBean.class);
                List<JsonBean.DataBean> list = jsonBean.getData();
                listView.setAdapter(new MyAdapter(getActivity(), (ArrayList<JsonBean.DataBean>) list));
            }
        }
    };

4.GridView用AsyncTask的方式请求数据并优化适配器

移除多余视图

@Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.frag_02,container,false);
        gridView = (GridView)view.findViewById(R.id.gridview);
        ViewGroup parent=(ViewGroup)view.getParent();
        //移除多余视图
        if (parent!=null){
            parent.removeView(view);
        }
        MyAsyncTask myAsyncTask=new MyAsyncTask();
        myAsyncTask.execute(path);
        return view;
    }

创建AsyncTask

private class MyAsyncTask extends AsyncTask<String,Integer,String>{

       @Override
       protected String doInBackground(String... strings) {
           String uri=strings[0];
           try {
               URL url=new URL(path);
               HttpURLConnection conn=(HttpURLConnection)url.openConnection();
               conn.setRequestMethod("GET");
               conn.setConnectTimeout(5000);
               if (conn.getResponseCode()==200){
                   InputStream inputStream = conn.getInputStream();
                   ByteArrayOutputStream bos = new ByteArrayOutputStream();
                   byte[] buffer = new byte[1024];
                   int len=0;
                   while ((len=inputStream.read(buffer))!=-1){
                       bos.write(buffer,0,len);
                   }
                   inputStream.close();
                   bos.close();
                   String json = bos.toString();
                   return json;
               }
           } catch (Exception e) {
               e.printStackTrace();
           }
           return null;
       }

       @Override
       protected void onPostExecute(String s) {
           super.onPostExecute(s);
           Log.i("xxx",s.toString());
           Gson gson=new Gson();
           JsonBean2 jsonBean2 = gson.fromJson(s, JsonBean2.class);
           List<JsonBean2.DataBean> list = jsonBean2.getData();
            gridView.setAdapter(new MyAdapter2(getActivity(), (ArrayList<JsonBean2.DataBean>) list));
       }
   }

猜你喜欢

转载自blog.csdn.net/weixin_44310357/article/details/85377130