簡體   English   中英

何時onCreate()在非活動類中調用?

[英]When is onCreate() called in a non-activity class?

我查閱了有關數據庫的不同教程,看到它大多是相同的方法。 我不明白:據我所知,onCreate()只能通過一個活動的開始自動調用(startActivity(new Intent(this))。但是在下面的例子中,擴展SQLiteOpenHelper的類不是一個活動但是包含onCreate()方法,它永遠不會被手動調用。這是如何工作的,特別是WHEN是它的起始點?當你調用構造函數時會調用它嗎?我試着用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();
    }
}

據我所知,onCreate()只能在活動開始時自動調用(startActivity(new Intent(this))。

Android中有很多地方出現onCreate()方法,包括ActivityServiceContentProviderSQLiteOpenHelper

這是如何運作的

當且僅當數據庫尚不存在時,才會調用SQLiteOpenHelper onCreate()以響應getReadableDatabase()getWriteableDatabase()調用。

兩個類都具有相同名稱的功能這一事實並不意味着它們有共同點。 onCreateSQLiteOpenHelper當你問數據庫的第一次(與被稱為getReadeableDatabase()getWritableDatabase()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM