![](/img/trans.png)
[英]onActivityResult doesn't get called by finish() when the parent activity is passed as parameter to an intent in a non-activity class
[英]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()
方法,包括Activity
, Service
, ContentProvider
和SQLiteOpenHelper
。
這是如何運作的
當且僅當數據庫尚不存在時,才會調用SQLiteOpenHelper
onCreate()
以響應getReadableDatabase()
或getWriteableDatabase()
調用。
兩個類都具有相同名稱的功能這一事實並不意味着它們有共同點。 onCreate
在SQLiteOpenHelper
當你問數據庫的第一次(與被稱為getReadeableDatabase()
或getWritableDatabase()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.