在前面的问题中,我建议我不需要维护数据库,因为设备因使用本地数据库而旋转。旋转设备时发生崩溃 - 生命周期问题
我认为我至少可以维护我的列表的数据源。我在尝试执行此操作时遇到了问题,因为我收到错误,说没有在数据库上调用close()。尽管我在onDestroy中调用close。
任何人都可以看到我在哪里错了吗?我只想通过维护数据以在旋转设备后重新填充列表来改善用户体验。
是困惑我的另一件事是我的日志报表中按以下顺序出来:
- 的onCreate航班
- 第一设置
- 重复使用的数据源
- 破坏活性
我希望在重新使用数据源之前销毁活动发生。
package com.testing.flights;
import android.app.ListActivity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.provider.BaseColumns;
import android.util.Log;
import android.widget.SimpleCursorAdapter;
public class FlightListActivity extends ListActivity {
private SQLiteDatabase database;
private String fields[] = {BaseColumns._ID, "name", "flights", "distance"};
private SimpleCursorAdapter datasource;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.v(ACTIVITY_SERVICE, "onCreate flights");
datasource = (SimpleCursorAdapter) getLastNonConfigurationInstance();
if (datasource == null) {
database = getData();
datasource = getCursor();
Log.v(ACTIVITY_SERVICE, "first setup");
}
setListAdapter(datasource);
}
protected SQLiteDatabase getData() {
DataBaseHelper myDbHelper = new DataBaseHelper(this.getApplicationContext());
return myDbHelper.openDataBase();
}
protected CustomCursorAdapter getCursor() {
Cursor data = database.query("pilots", fields, null, null, null, null, null);
final CustomCursorAdapter mysource = new CustomCursorAdapter(this, R.layout.row, data, fields, new int[] { R.id.id, R.id.name, R.id.flights, R.id.distance });
return mysource;
}
@Override
public Object onRetainNonConfigurationInstance() {
Log.v(ACTIVITY_SERVICE, "reusing datasource");
final SimpleCursorAdapter myData = datasource;
return myData;
}
@Override
protected void onDestroy() {
Log.v(ACTIVITY_SERVICE, "destroying activity");
database.close();
super.onDestroy();
}
}
LogCat:
04-03 16:22:55.900: E/SQLiteDatabase(1860): close() was never explicitly called on database '/data/data/com.testing.flights/databases/club'
当你有任何错误总是发表您的logcat – 2012-04-03 15:34:48
@Samir - 我已经添加了错误 – Neil 2012-04-03 15:36:47
尼尔,看看官方Android开发者博客,有一个整体上张贴。 – 2012-04-03 15:42:49