java - Android 保存 ArrayList<CustomObject> onPause 和 onSaveInstanceState

标签 java android arraylist onresume onpause

我有一个 ArrayList,其中填充了一些自定义 POJO,当用户切换屏幕方向(onSaveInstanceState)以及例如用户点击后退按钮(onPause)。

据我所知,SharedPreferences只能保存原始数据类型,而bundle不能保存对通用ArrayList的引用。

关于如何解决这个问题有什么建议吗?

问候,

马库斯

最佳答案

1- 创建一个类并放置您想要存储的所有内容,例如 POJOarraylist 并让该类实现 Serialized 接口(interface)。

class MyBundle  implements Serializable {

   ArrayList<POJO> mPOJO;


   MyBundle( ArrayList<POJO> pojo){

    mPOJO= pojo;


   }

}

2-将其写入文件:

 ObjectOutputStream oos = null;
 FileOutputStream fout = null;
 try{
        FileOutputStream fout = new FileOutputStream("Your file path");
        ObjectOutputStream oos = new ObjectOutputStream(fout);
        oos.writeObject(mb); // mb is an instance of MyBundle
 } catch (Exception ex) {
        e.printStackTrace();
 }finally {
   if(oos  != null){
     oos.close();
   } 
 }

并取回所有内容:

 ObjectInputStream objectinputstream = null;
 try {
        streamIn = new FileInputStream("Your file address");
        objectinputstream = new ObjectInputStream(streamIn);
        MyBundle mb = (MyBundle) objectinputstream.readObject();

   } catch (Exception e) {
        e.printStackTrace();
   }finally {
     if(objectinputstream != null){
        objectinputstream .close();
     } 
   }

关于java - Android 保存 ArrayList<CustomObject> onPause 和 onSaveInstanceState,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26035366/

相关文章:

java - 如何在 hibernate 中调用程序?

android - 如何使 ICS 应用程序(API 15)与 Jellybean(API 16)兼容?

android - Volley 无法创建缓存目录。无法清理文件

java - 在 Java 中使用 ArrayList 从文件中读取

Java 按字母顺序对 ArrayList 进行排序并对其他数组进行相同的更改

java - 当方法明显存在时出现NoSuchMethodError

java - Matlab中多行注释的正则表达式

java - 我们如何在 java 中使用反射将 transient 添加到现有类?

android - 无法使用 gradle 4.1 : "unknown element * found" 构建项目

Java for循环创建n个对象