网络数据存到本地,无网络时取出本地数据

来源:互联网 发布:plsql导入sql文件命令 编辑:程序博客网 时间:2024/06/15 16:57
package com.bwie.imageloadercache;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.net.ConnectivityManager;import android.net.Network;import android.net.NetworkInfo;import android.os.AsyncTask;import android.os.Build;import android.os.Environment;import android.support.annotation.RequiresApi;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.ListView;import com.google.gson.Gson;import com.nostra13.universalimageloader.core.DisplayImageOptions;import com.nostra13.universalimageloader.core.ImageLoader;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.net.URLConnection;import java.util.List;public class MainActivity extends AppCompatActivity {    private ListView lv;    @RequiresApi(api = Build.VERSION_CODES.M)    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        lv = (ListView) findViewById(R.id.lv);        boolean b = getnetState(getApplicationContext());        if(b){            System.out.println("有网网网网网网网网网网网网网网网网网网网网网网网");        loadData("http://japi.juhe.cn/health_knowledge/infoList?key=0efb839c8e13e91a0e928f8164048a5d");        }else{            System.out.println("没网网网网网网网网网网网网网网网网网网网网网网网");            // lv.setAdapter(new Myadapter(list));            try {                File file = new File(getCacheDir(), "info.txt");                InputStream is= new FileInputStream(file);                ByteArrayOutputStream baos = new ByteArrayOutputStream();                byte[] bytes = new byte[1024];                int len = 0;                while ((len = is.read(bytes)) != -1) {                    baos.write(bytes, 0, len);                }                is.close();                baos.close();                String s=baos.toString();                Gson gson = new Gson();                HealthInfo healthInfo = gson.fromJson(s, HealthInfo.class);                List<HealthInfo.ResultBean.DataBean> list = healthInfo.getResult().getData();                lv.setAdapter(new Myadapter(list));            } catch (Exception e) {                e.printStackTrace();            }        }    }    private void loadData(String path) {        System.out.println("******************loadData");        new AsyncTask<String, Void, String>() {            @Override            protected String doInBackground(String... params) {                try {                    System.out.println("******************doInBackground");                    HttpURLConnection connection = (HttpURLConnection) new URL(params[0]).openConnection();                    connection.setRequestMethod("GET");                    connection.setConnectTimeout(5000);                    connection.setReadTimeout(5000);                    if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {                        System.out.println("******************HTTP_OK");                        InputStream is = connection.getInputStream();                        File file = new File(getCacheDir(),"info.txt");                        OutputStream os = new FileOutputStream(file);                        ByteArrayOutputStream baos = new ByteArrayOutputStream();                        byte[] bytes = new byte[1024];                        int len = 0;                        while ((len = is.read(bytes)) != -1) {                            baos.write(bytes, 0, len);                            os.write(bytes, 0, len);                        }                        os.close();                        is.close();                        baos.close();                        System.out.println("写完完完完完完完完完完完完完");                        return baos.toString();                    }                } catch (MalformedURLException e) {                    e.printStackTrace();                } catch (IOException e) {                    e.printStackTrace();                }                return null;            }            @Override            protected void onPostExecute(String s) {                System.out.println("******************onPostExecute");                super.onPostExecute(s);                if (s != null) {                    Gson gson = new Gson();                    HealthInfo healthInfo = gson.fromJson(s, HealthInfo.class);                    List<HealthInfo.ResultBean.DataBean> list = healthInfo.getResult().getData();                    lv.setAdapter(new Myadapter(list));                }            }        }.execute(path);    }    class Myadapter extends BaseAdapter {        DisplayImageOptions options;        List<HealthInfo.ResultBean.DataBean> list;        public Myadapter(List<HealthInfo.ResultBean.DataBean> list) {            this.list = list;            options = new DisplayImageOptions.Builder()                    .cacheOnDisk(true)                    .cacheInMemory(true)                    .build();        }        @Override        public int getCount() {            return list != null ? list.size() : 0;        }        @Override        public Object getItem(int position) {            return list.get(position);        }        @Override        public long getItemId(int position) {            return position;        }        @Override        public View getView(int position, View convertView, ViewGroup parent) {            ImageView imageView = new ImageView(getApplicationContext());            ImageLoader.getInstance().displayImage(list.get(position).getImg(), imageView, options);            return imageView;        }    }    @RequiresApi(api = Build.VERSION_CODES.M)    boolean getnetState(Context context) {        ConnectivityManager mannager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);        NetworkInfo activeNetworkInfo = mannager.getActiveNetworkInfo();        return activeNetworkInfo != null && activeNetworkInfo.isConnected();    }}
阅读全文
0 0
原创粉丝点击