我查阅了有关数据库的不同教程,看到它大致采用相同的方法。 我不明白的是:据我所知,onCreate()只能在活动开始时自动调用(startActivity(new Intent(this))。 但是在下面的示例中,扩展SQLiteOpenHelper的类不是活动,而是包含onCreate()方法,该方法永远不会被手动调用。这是如何工作的,特别是什么时候是它的起点?调用构造函数时会调用它吗?我试着用logcat来查看它,我从来没有收到消息,已经调用了onCreate()。
我有一个这样的课程:
public class MySQLiteHelper extends SQLiteOpenHelper {
// Database Version
private static final int DATABASE_VERSION = 1;
// Database Name
private static final String DATABASE_NAME = "BookDB";
public MySQLiteHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
// SQL statement to create book table
String CREATE_BOOK_TABLE = "CREATE TABLE books ( " +
"id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"title TEXT, "+
"author TEXT )";
// create books table
db.execSQL(CREATE_BOOK_TABLE);
}
一个处理这个类的外部Activity:
public class MyActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
MySQLiteHelper db = new MySQLiteHelper(this);
// add Books
db.addBook(new Book("Android Application Development Cookbook", "Wei Meng Lee"));
db.addBook(new Book("Android Programming: The Big Nerd Ranch Guide", "Bill Phillips and Brian Hardy"));
db.addBook(new Book("Learn Android App Development", "Wallace Jackson"));
// get all books
List<Book> list = db.getAllBooks();
}
}
答案 0 :(得分:2)
据我所知,onCreate()只能在活动开始时自动调用(startActivity(new Intent(this))。
Android中有多种地方出现onCreate()
方法,包括Activity
,Service
,ContentProvider
和SQLiteOpenHelper
。
当且仅当数据库尚不存在时,才会调用这是如何工作的
onCreate()
SQLiteOpenHelper
来响应getReadableDatabase()
或getWriteableDatabase()
调用。
答案 1 :(得分:1)
两个类都具有相同名称的功能这一事实并不意味着它们有共同点。
当您第一次请求数据库时(onCreate
或SQLiteOpenHelper
)
getReadeableDatabase()
中的getWritableDatabase()