2011-04-22 104 views
0

我是Android的新手。我的问题不是关于如何做某件事,而是关于我想到的想法是否被优化。使用数据结构对象在Android中存储数据

我创建一个聊天应用。我面临的最大问题是存储非永久性数据,无论何时关闭活动,所有数据都丢失。最大的问题是,当用户从聊天屏幕(聊天活动)移动到人民列表(人民活动)时,所有数据再次丢失,并且如果用户重新开始聊天,他不能看到历史。

作为一种变通方法,我创建了几个数据类和服务。只要服务器从活动或服务器接收到更新,服务就会将数据存储在类中。之后,在每一项新活动中,我都会将这个对象从一个活动传递给另一个活动,并将其传递给另一个活动。

我想在此提出了一些建议,这是一个很好的方式去解决?感谢您宝贵的时间。

回答

3

如果我正确理解,你需要一种方法来存储的变量数据或一个数据结构或任何内容,不要失去这个数据时,整个severals活动你的应用程序的变化,对不对?您需要在多个活动中保存状态。

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

第二和建议的解决方案:通过应用程序上下文(容易)

您应该创建自己的android.app.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(); 
     ... 
    } 
} 

成了!这是做到这一点的最佳方式。

对不起,我英文很差。

+0

不要忘记在'AndroidManifest.xml'中声明你的应用程序子类。即。 '' – howettl 2012-05-07 20:09:22