【发布时间】:2014-07-18 07:58:20
【问题描述】:
我正在编写一个严重依赖 sqlite 数据库的 Android 应用程序。我不清楚将记录数据从一个活动传递到下一个活动的最佳方式(在内存和资源方面最有效)是什么。例如,有一个活动,您可以在其中查看客户记录,然后可以单击操作菜单项来编辑记录。目前,我通过打开它的Intent 将表名和记录 ID 传递给新活动,并在新活动中重新从数据库中提取所有数据。然而,我突然想到,传递一个包含所有记录数据的对象可能会更好(即更有效),该对象具有更新或删除记录的方法。每个表最多只有十几列,所以对象会很小,尽管在某些情况下为了适应表之间的一对一或一对多关系,@传递的数据对象987654322@ 将包含一个或多个数据对象作为字段。我正在寻找利弊,并在可能的情况下对最佳解决方案做出明确裁决。
这个
(查看记录活动)
Intent intent = new Intent(this, EditRecordActivity.class);
intent.putExtra(TABLE_NAME, tableName);
intent.putExtra(RECORD_ID, recordId);
startActivity(intent);
(编辑记录活动)
String tableName = getIntent().getStringExtra(ViewRecordActivity.TABLE_NAME);
String recordId = getIntent().getStringExtra(ViewRecordActivity.RECORD_ID);
Cursor c = db.query(tableName, DB_COLUMNS, "_ID = ?",new String[]{ recordId }, null,null, null);
// populate EditText fields with data from Cursor
或者这个
(客户类)
public class Customer extends Record{
String id;
String firstName;
String lastName;
String phone;
public Customer(int recordId, String table){
Cursor c = db.query(table, DB_COLUMNS, "_ID = ?",new String[]{ recordId }, null, null, null);
c.moveToFirst();
id = c.getString[0];
firstName = c.getString[1];
lasstName = c.getString[2];
phone = c.getString[3];
c.close();
}
}
(查看记录活动)
Intent intent = new Intent(this, EditRecordActivity.class);
intent.putExtra(RECORD, customer);
startActivity(intent);
(编辑记录活动)
Record r = getIntent().getExtras().getExtra(ViewRecordActivity.RECORD);
// populate fields directly from data object, no call to database until changes are saved
【问题讨论】:
标签: android sqlite optimization