在android中保存应用程序的对象,或者这是否是正确的方法

时间:2014-07-04 05:10:38

标签: java android

所以,我在Java中有一些非常次要的经验,我正在尝试学习/工作一个android项目。我遇到的问题是围绕保存/检索用户数据。

它是一个简单的标记应用程序(主要用于我自己),但基本上有一个学期对象,其中包含类对象,其中包含可标记的对象(即每个对象都有自己的权重)。

基本上我要问的是我将如何检索数据..我真正想要的是显示“哦,嘿,这是你当前学期的标记:”当你打开主要活动/开始时应用程序(这将涉及加载用户已输入数据的学期对象并调用方法),但我不知道每次打开和关闭应用程序时如何打开/保存对象。

我会在学期课程中实现序列化,还是在关闭/打开应用程序时保存/打开对象。即使是正确的方法,保存学期对象?

我一直在寻找一段时间,我看到有关人们打开文件的问题,我现在很丢失。

(哦,虽然我是关于这个项目的主题,但是嵌套对象的想法是一种糟糕的方法吗?就像有一个包含多个类对象的学期对象,每个对象包含多个可标记对象)

3 个答案:

答案 0 :(得分:0)

  

它是一个简单的标记应用程序(主要用于我自己),但基本上有一个学期对象,其中包含类对象,其中包含可标记的对象(即每个对象都有自己的权重)。

这些对象可以很好地存储在SQLite数据库的单独表中。

  

但我不知道每次打开和关闭应用程序时如何打开/保存对象。

您可以扩展Application类,并在其onCreate()中放置您只想在最初启动应用时运行一次的任何代码。

在主Activity的onCreate()中,您还可以在每次用户导航到该活动时放置代码以显示数据。

  

我会在学期课程中实现序列化,还是在关闭/打开应用程序时保存/打开对象。即使是正确的方法,保存学期对象?

听起来您的对象可以通过将它们存储在关系结构中而受益,因此您可以考虑将它们存储在SQLite数据库中。

  

(哦,虽然我关于这个项目的主题,但是将对象嵌套为一种坏方法的想法是什么?就像有一个包含多个类对象的学期对象,每个对象包含多个可标记对象)

如果有意义则不行。例如,您可以拥有一个Semester对象,该对象包含Class对象的ArrayList作为成员。

答案 1 :(得分:0)

  1. Gson可用于对象之间的对象(反)序列化和可存储在文件中的json字符串。

    Gson(de)序列化也可以处理嵌套对象,只要这些对象也是用Gson序列化的。

    但是,使用Gson意味着您需要实现保存到文件并稍后从中检索。 (虽然这里有很多Android问题/答案应该有所帮助)

  2. 如果您的对象足够简单,只有原始数据(如字符串和数值),您可以使用Android的SQL实现在数据库中存储/检索它们。

  3. 至于嵌套对象,你的场景似乎每个孩子和更深层次的后代都是独一无二的,所以听起来不会有任何混乱的情况。

答案 2 :(得分:0)

使用SQLite数据库存储所有主题信息,即主题对象。

实现所有数据库CRUD操作将解决您的大多数问题。

请参阅here

将主题添加到数据库中的示例

    public void addSubject(Subject sub) {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put(KEY_NAME, sub.getSubjectName()); // Subject Name
        values.put(KEY_MARK, sub.getMark()); // Subject Mark
        values.put(KEY_SEMSTER, sub.getSemster()); // Semester subject is marked 

        // Inserting Row
        db.insert(TABLE_SUBJECT, null, values);
        db.close(); // Closing database connection
    }

通过使用数据库中的学期键,您可以轻松地在一个学期中检索所有科目。因此,您只需要管理一种类型的对象。

对于刚开始使用Java的人来说,这可能有点令人生畏,但是有很多例子可以让你开始使用,你可以随时在这里找到帮助。别担心,探索。