我是android的新手。我的问题不是关于如何做某事,而是关于我想到的想法的更多优化与否。
我正在创建一个聊天应用。我面临的最大问题是存储非持久性数据,因为每当活动关闭时,所有数据都会丢失。最大的问题是当用户从聊天屏幕(聊天活动)移动到人民列表(人民活动)时,所有数据都再次丢失,如果用户重新开始聊天,他就看不到历史记录。
作为一种解决方法,我正在创建一些数据类和服务。只要服务从活动或服务器接收到更新,该服务就会将数据存储在类中。在每次新活动之后,我将把这个对象从一个活动传递到另一个活动并服务。
我想在此提出一些建议,这是一个好的方式吗?谢谢你宝贵的时间。
答案 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();
...
}
}
完成了!这是最好的方法。
抱歉我的英语很差。