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

时间:2011-04-22 10:01:41

标签: android

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

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

作为一种解决方法,我正在创建一些数据类和服务。只要服务从活动或服务器接收到更新,该服务就会将数据存储在类中。在每次新活动之后,我将把这个对象从一个活动传递到另一个活动并服务。

我想在此提出一些建议,这是一个好的方式吗?谢谢你宝贵的时间。

1 个答案:

答案 0 :(得分:3)

如果我理解得当,您需要一种方法来存储变量数据或一个数据结构的内容或其他内容,并且当您的应用更改多个活动时,不要丢失这些数据,对吧?您需要跨多个活动保存状态。

第一个解决方案:在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();
         ...
     }
}

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

抱歉我的英语很差。