使用数据结构对象在Android中存储数据



我是android的新手。我的问题不是关于如何做某事,而更多的是关于我心中的想法是否优化。

我正在创建一个聊天应用程序。我面临的最大问题是存储非持久性数据,因为每当活动关闭时,所有数据都丢失了。最大的问题是当用户从聊天屏幕(聊天活动)移动到人员列表(人员活动)时,所有数据再次丢失,如果用户重新启动聊天,他无法看到历史记录。

作为解决方法,我创建了几个数据类和一个服务。当服务接收到来自活动或服务器的更新时,服务将数据存储在类中。之后,对于每个新活动,我将把这个对象从一个活动传递到另一个活动和服务。

我想要一些关于这方面的建议,这是一个好的方法吗?感谢您的宝贵时间。

如果我理解正确的话,你需要一种方法来存储变量的数据或一个数据结构的内容或任何东西,并且当你的应用程序跨几个活动更改时不会丢失这些数据,对吗?您需要跨多个activity保存状态。

第一个解决方案:在Java中,这个问题的一个解决方案可能是使用"静态"变量。你可以这样做,但是使用Android,我们可以使用一个更优雅的解决方案。

第二个也是推荐的解决方案:将状态与应用程序上下文关联(简单)

你应该创建自己的android.app.Application子类。

Application的一个子类继承了Application的属性,你可以在任何你想使用"Context.getApplicationContext()"命令的地方访问这个类。通常,您将使用这个类来获得需要全局访问的所有内容。例子:

class YourName_App extends Application {
     private ArrayList<String> chatConversation;
     public String getChatConversation(){
        return this.chatConversation;
     }
     public void setChatConversation(ArrayList<String> chat){
        this.chatConversation = chat;
     }
}

现在你的聊天活动:

class Chat extends Activity {
     ArrayList<String> conversation;
     @Override
     public void onCreate(Bundle b)
     {
         ...
         YourName_App appState = ((YourName_App) getApplicationContext());
         conversation = appState.getChatConversation();
         ...
     }
}

完成了!这是最好的方法。

对不起,我的英语不好。

最新更新