首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在移动应用程序中处理大型对象的最佳实践

在移动应用程序中处理大型对象的最佳实践
EN

Stack Overflow用户
提问于 2017-10-26 14:00:30
回答 2查看 83关注 0票数 1

我有一个带有很多“概览”-screens的移动应用程序,即不同形式的对象列表。

这些对象相当大。模型(结构或类)有大约70-80个属性。

所有这些属性很少一次需要,特别是在列表中,这些对象经常出现,而您通常只显示8-10个属性。

当进入对象的详细屏幕时,它将消耗更多的属性。

那么,你通常会如何处理这样的情况:

1)创建两个类。一个包含另一个的子集,并在列表中使用子集,在详细视图中使用完整类

2)只创建一个类,但只获取列表所需的属性,并在获取列表数据时将其余属性填入“虚拟值”,仅在详细显示时才获取完整对象

3)只有一个类的定义,并且总是为它获取所有东西。现在是2017年,数据可能比你的平均网页还要小

如果您需要更多信息,请索要。

EN

回答 2

Stack Overflow用户

发布于 2017-10-26 14:11:51

您绝对可以使用Model/ POJO类来实现同样的目的。就像我们在模块化编程中使用函数一样,你可以创建多个模型类,而不是创建一个单独的类,所有的attributes.You都可以根据所需的属性使用POJO类。

代码语言:javascript
复制
For example:-

    class student{
    String firstname;
    String lastname;
    String street;
    String pincode;}

**can be converted to :-
`
class student{
StudentName name;
StudentAddress address;
}
class StudentName {
String firstname;
String lastname;
}
class StudentAddress{
String street;
String pincode;
}`
票数 2
EN

Stack Overflow用户

发布于 2017-10-26 14:42:27

考虑到从web服务接收的数据是持久化的,并从SQLite数据库中进行查询。

当数据在数据库中时,您可以使用一对一关系。例如,用于

假设您有model/POJO as,其中您以列表的形式向用户显示数据。

代码语言:javascript
复制
class User {
    //basic info showed in the list
    int userId;
    String name;
    String emailId;
}

class UserDetail {
    int id;
    int userPassportId;
    int userId; //foriegn key to user table
    .....
    // other nessesary details
}

SQL等效项

代码语言:javascript
复制
CREATE TABLE user(
    id INTEGER PRIMARY KEY,
    name TEXT,
    emailId TEXT
);

CREATE TABLE userDetails(
    id INTEGER PRIMARY KEY,
    user_passport_number TEXT,
    user_id INTEGER,
    FOREIGN KEY(user_id) REFERENCES user(id) 
);

因此,现在当您显示项目时,您可以只查询所有用户的数据,这将为您提供您可能想要在UI中显示的基本用户信息。

当您转到详细信息页面时,您可以使用用户id进行查询,以获取相关的详细信息。

代码语言:javascript
复制
SELECT * FROM userDetails WHERE user_id = user_id_recived;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46946855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档