Android 将List<Bean>数据写入文件,从文件中读取;以及多个 Activity 的退出方法

来源:互联网 发布:手机决策软件 编辑:程序博客网 时间:2024/06/07 06:06

数据集合写入文件的方法:

/** * 将集合写入sd * * @param fileName 文件名 * @param list     集合 * @return true 保存成功 */public boolean writeListIntoSDcard(String fileName, List<T> list) {    if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {        File sdCardDir = Environment.getExternalStorageDirectory();//获取sd卡目录        File sdFile = new File(sdCardDir, fileName);        try {            FileOutputStream fos = new FileOutputStream(sdFile);            ObjectOutputStream oos = new ObjectOutputStream(fos);            oos.writeObject(list);//写入            fos.close();            oos.close();            return true;        } catch (FileNotFoundException e) {            // TODO Auto-generated catch block            e.printStackTrace();            return false;        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();            return false;        }    } else {        return false;    }}
从文件当中读入数据集合的读取方法:

/** * 读取sd卡对象 * * @param fileName 文件名 * @return */@SuppressWarnings("unchecked")public List<T> readListFromSdCard(String fileName) {    if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {  //检测sd卡是否存在        List<T> list;        File sdCardDir = Environment.getExternalStorageDirectory();        File sdFile = new File(sdCardDir, fileName);        try {            FileInputStream fis = new FileInputStream(sdFile);            ObjectInputStream ois = new ObjectInputStream(fis);            list = (List<T>) ois.readObject();            fis.close();            ois.close();            return list;        } catch (StreamCorruptedException e) {            // TODO Auto-generated catch block            e.printStackTrace();            return null;        } catch (OptionalDataException e) {            // TODO Auto-generated catch block            e.printStackTrace();            return null;        } catch (FileNotFoundException e) {            // TODO Auto-generated catch block            e.printStackTrace();            return null;        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();            return null;        } catch (ClassNotFoundException e) {            // TODO Auto-generated catch block            e.printStackTrace();            return null;        }    } else {        return null;    }

其中数据集合文件是保存在 SD 卡当中,传入保存的文件名(注意传入的是文件名而不是文件的全路径)


最后在添加 退出多个 Activity 方法:

/** * 创建一个 Activity List 集合 */private static List<Activity> mActivityList;/** * 将所有需要回退的 Activity 加入到集合当中 * @param activity */public static void addActivity2List(Activity activity) {    if (null == mActivityList)        mActivityList = new ArrayList<Activity>();    if (null != activity)        mActivityList.add(activity);}/** * 遍历集合当中所有的 Activity ,并且将其全部的 finish * 注意这里只能从后面开始遍历,来 finish Activity;因为 List 集合数据默认是添加到集合的后面,如果从 0 开始 finish,会看不到响应的效果 */public static void finishActivityFromList() {    if (null != mActivityList)        for (int i = mActivityList.size() - 1 ; i >= 0; i--) {            if (null != mActivityList.get(i)) {                mActivityList.get(i).finish();            }        }    mActivityList.clear();}


0 0