是否异步将java对象保存到内部内存?

是否异步将java对象保存到内部内存?,java,android,file,object,Java,Android,File,Object,我需要将一个java对象保存到内部内存中(如果具体的话,是不同服务器响应的高级集合)。现在我使用以下代码: public void write(Context context) { FileOutputStream fos = null; try { fos = context.openFileOutput(BACKSTACK_FILENAME, Context.MODE_PRIVATE); } catch (FileNotFoundException e

我需要将一个java对象保存到内部内存中(如果具体的话,是不同服务器响应的高级集合)。现在我使用以下代码:

public void write(Context context) {
    FileOutputStream fos = null;
    try {
        fos = context.openFileOutput(BACKSTACK_FILENAME, Context.MODE_PRIVATE);
    } catch (FileNotFoundException e) { e.printStackTrace(); }

    try {
        ObjectOutputStream oos = new ObjectOutputStream(fos);
        oos.writeObject(backStack);
    } catch (IOException e) {
        L.t("failed to write backstack: " + e.toString()); e.printStackTrace();
    } finally {
        try { if (fos != null) fos.close(); } catch (IOException e) { }
    }
}

public void read(Context context) {
    FileInputStream fis = null;
    try {
        fis = context.openFileInput(BACKSTACK_FILENAME);
    } catch (FileNotFoundException e) { e.printStackTrace();}

    try {
        ObjectInputStream ois = new ObjectInputStream(fis);
        Deque<FragmentInfo> list = (Deque<FragmentInfo>) ois.readObject();
        L.t(list.toString());
        backStack = list;
    } catch (IOException | ClassNotFoundException e) {
        L.t("failed to read backstack" + e.toString()); e.printStackTrace();
    } finally {
        try { if (fis != null) fis.close(); } catch (IOException e) { }
    }
}
公共无效写入(上下文){
FileOutputStream=null;
试一试{
fos=context.openFileOutput(BACKSTACK\u文件名,context.MODE\u PRIVATE);
}catch(FileNotFoundException e){e.printStackTrace();}
试一试{
ObjectOutputStream oos=新的ObjectOutputStream(fos);
oos.writeObject(backStack);
}捕获(IOE异常){
L.t(“未能写入backstack:+e.toString());e.printStackTrace();
}最后{
尝试{if(fos!=null)fos.close();}catch(IOException e){}
}
}
公共无效读取(上下文){
FileInputStream fis=null;
试一试{
fis=context.openFileInput(BACKSTACK_文件名);
}catch(FileNotFoundException e){e.printStackTrace();}
试一试{
ObjectInputStream ois=新ObjectInputStream(fis);
Deque list=(Deque)ois.readObject();
L.t(list.toString());
后退=列表;
}捕获(IOException | ClassNotFoundException e){
L.t(“读取backstack失败”+e.toString());e.printStackTrace();
}最后{
尝试{if(fis!=null)fis.close();}catch(IOException e){}
}
}
因为这里有上下文,所以执行UI线程挂起(滞后)白色操作。 物体越大,看起来就越糟糕。因此,问题是:

有没有办法将java对象异步保存到内存中?


请不要建议将数据库用于这样一项简单的任务。

保存到内部内存不会有帮助。真正的问题是您在事件侦听器线程上做了太多的工作。如果你把很多东西保存到一个文件、一个数据库、“内存”中,你也会遇到同样的问题。。。。或者其他任何事情。无论您如何进行序列化,也无论您将序列化结果保存在何处,序列化的成本都相对较高


解决方案是使用
AsyncTask

使用AsyncTask…或
线程来完成工作。因此,即使我需要使用上下文来处理文件,如果我使用AsyncTask,它也不会挂起(延迟)UI?请提供一段代码片段。1)正确。(至少……达到一级近似值)2)谷歌肯定能帮你。。。。。