从Android中的数据库中再次获取对象是否效率低下?

时间:2014-04-11 15:49:37

标签: android sqlite android-adapter

我来自网络世界,我是Android的新手。

在网络世界中,您通常会从"列表视图"中传递事物的ID。到"详细视图",例如:

URL: Messages/List --> Message/Detail?messageId=x

在Android中,我的所有消息都包含此活动:MessagesActivity
它们从db(SQLite)中获取并显示在带有自定义适配器的ListView中。

问题:仅将此活动的消息ID(在意图附加内容中)传递给MessageDetailActivity是否效率低下?

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id)
    {               
        Intent intent = new Intent(thisActivityContext, MessageDetailActivity.class);
        intent.putExtra("messageId", id); // inefficient? should pass object?
        startActivity(intent);
    }

与传递整个消息对象相反。 我之所以这样问,是因为我没有找到非常直观的使用标签&#34;在我看来,我必须施展......

此外,持有所有&#34;消息&#34;标签中的对象可能会使用大量内存

1 个答案:

答案 0 :(得分:1)

如果您的对象相对较轻,您可以使其类实现Serializable并将其作为额外传递给MessageDetailActivity,如果您认为对象很重(内部有很多字段和嵌套对象),您应该传递Id并获取它再次来自MessageDetailActivity。

请记住,虽然在Android上从Sqlite获取记录在大多数设备上都很快,但是可以在新活动上获取几条记录(只要你在后台线程上执行它就可以保持UI锁定)

然而,我发现有一件事是,如果你需要在数据库上修改该对象,那么每次创建任何活动时只需从数据库中获取整个对象就会给自己省去很多麻烦,因为这样你会避免同步问题。