所以我有一个问题,我必须在学校做一个聊天应用程序,它的功能使我可以像WhatsApp一样离线查看以前的对话。
在我立即关闭互联网后,当我启动应用程序时,我可以看到我的对话,但是一段时间后,聊天不再加载。我在互联网上搜索了一下,并读到我必须将聊天记录另存为内部存储,但是我怎么做却找不到任何东西。
这是我用于在线和离线加载邮件的代码
public void loadConversations() {
boolean result;
try {
FileInputStream fileInputStream = getApplicationContext().openFileInput("CONVERSATIONS");
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
this.conversations = (HashMap<String, ArrayList<Message>>) objectInputStream.readObject();
objectInputStream.close();
fileInputStream.close();
result = true;
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
result = false;
}
if (this.conversations == null) {
this.conversations = new HashMap<>();
}
Log.d(TAG, "loadConversations result: " + result + " size: " + this.conversations.size());
}
public void persistConversations() {
boolean result;
try {
FileOutputStream fileOutputStream = getApplicationContext().openFileOutput("CONVERSATIONS",getApplicationContext().MODE_PRIVATE);
ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
objectOutputStream.writeObject(this.conversations);
objectOutputStream.flush();
objectOutputStream.close();
fileOutputStream.close();
result = true;
} catch (IOException e) {
e.printStackTrace();
result = false;
}
Log.d(TAG, "persistConversations result: " + result);
}
也许有人可以给我指点。
答案 0 :(得分:0)
最好的方法是使用firebase实时数据库以及在用户离线时(无互联网连接)制作聊天应用。 Firebase创建了一个本地数据库,并将所有详细信息存储在本地,并显示您的用户详细信息和消息。您无需创建单独的数据库。点击此链接可以了解Firebase实时数据库:-https://firebase.google.com/docs/database/android/start/?gclid=EAIaIQobChMInMag3qiV4wIVAh4rCh2fJQWAEAAYASABEgIfFPD_BwE