使用AsyncTask

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
主页面

public class MainActivity extends AppCompatActivity {
    private static final String TAG = "MainActivity";
    private String type = "top";
    private String key = "dbedecbcd1899c9785b95cc2d17131c5";
    private String path = "http://v.juhe.cn/toutiao/index?type=" + type + "&key=" + key;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ListView listView = findViewById(R.id.listView);
        //通过代码动态注册广播监听网络状态
        NetWorkBroadstReceiver receiver = new NetWorkBroadstReceiver();
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);

        registerReceiver(receiver,intentFilter);
    }
    //定义广播监听网络状态
    private class NetWorkBroadstReceiver extends BroadcastReceiver{
        //重写接收广播的方法
        @Override
        public void onReceive(Context context, Intent intent) {
            boolean b = NetWorkUtils.isNetWork(context);
            if(b){
                Toast.makeText(context, "有网", Toast.LENGTH_SHORT).show();
                //获取网络数据
                getSerVerData();
            }else{
                Toast.makeText(context, "没网", Toast.LENGTH_SHORT).show();

                AlertDialog.Builder builder = new AlertDialog.Builder(context);
                builder.setIcon(R.mipmap.ic_launcher);
                builder.setTitle("提示");
                builder.setMessage("请求设置网络");
                builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                            startActivity(new Intent(android.provider.Settings.ACTION_DATA_ROAMING_SETTINGS));
                    }
                });
                builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                    }
                });
                builder.show();
            }
        }
    }

    private void getSerVerData() {
        //获取网络数据
        MyAsyncTask task = new MyAsyncTask();
        //执行异步任务
        task.execute(path);
    }
    //耗时操作
    private class MyAsyncTask extends AsyncTask<String,Integer,String> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            
        }

        @Override
        protected String doInBackground(String... parmas) {
            String uri = parmas[0];
            //把接口地址包装成网络地址
            try {
                URL url = new URL(uri);
                HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                conn.setRequestMethod("GET");
                conn.setConnectTimeout(5000);
                conn.setReadTimeout(5000);
                if (conn.getResponseCode()==200){
                    InputStream inputStream = conn.getInputStream();

                    ByteArrayOutputStream ao = new ByteArrayOutputStream();
                    byte[] buffer = new byte[1024];
                    int len = 0;
                    while ((len=inputStream.read(buffer))!=-1){
                        ao.write(buffer,0,len);
                    }
                    inputStream.close();
                    ao.close();
                    String json = ao.toString();
                    return json;
                }
            } catch (Exception e) {
                e.printStackTrace();
            }

            return null;
        }
        //更新UI
        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            Log.i(TAG, "onPostExecute: "+s);
            Gson gson = new Gson();
            Bean bean = gson.fromJson(s, Bean.class);
            List<Bean.ResultBean.DataBean> list = bean.getResult().getData();
        }
    }
}



`判断是否有网

public class NetWorkUtils {
    //判断是否有网
    public static boolean isNetWork(Context context){
        ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        //得到网络信息
        NetworkInfo info =  cm.getActiveNetworkInfo();
        if(info!=null){
            return info.isAvailable();
        }
        return false;
    }
}

`_
<><><><><><><><>
建立Bean类 创建适配器

猜你喜欢

转载自blog.csdn.net/weixin_44308983/article/details/85331402