0

onPause、onResume、および onDestroy で何が起こるかを指定しないため (そこで何を指定すればよいかわからないため)、アプリケーションを閉じて再度起動すると、データベースはどうなるのだろうかと考えています。

これが私のDBToolsクラスです

public class DBTools extends SQLiteOpenHelper {

    public DBTools(Context applicationcontext) {
        super(applicationcontext, "rggarb.db", null, 1);
    }

    public void onCreate(SQLiteDatabase database) {

        String tableUsers = "CREATE TABLE users ( userId INTEGER PRIMARY KEY, userName TEXT, userEmail TEXT, userPassword TEXT, userAvatar TEXT, userSex TEXT)";
        database.execSQL(tableUsers);

    }

    public void onUpgrade(SQLiteDatabase database, int version_old, int current_version) {
        String dropTableUsers = "DROP TABLE IF EXISTS tableUsers";
        database.execSQL(dropTableUsers);
        onCreate(database);
    }
             //some CRUD methods here, irrelevant for this question

}

そして、これが私がそれを操作する方法です

MainActivity で:

public class MainActivity extends Activity  {
    DBTools dbTools = new DBTools(this);

次に、ユーザーはサインアップ アクティビティに移動し、そこで次の操作を行います。

public class Signup extends Activity {

private DBTools dbTools = new DBTools(this);
    //later on in this class I do some checks and inserts.

私は何かが間違っているのではないかと疑っており、DB の使用方法に慣れていません。各 onDestroy で空白になりますか? 毎回 MainActivity でインスタンス化する必要がありますか? そこでインスタンス化した場合、サインアップ アクティビティでもう一度インスタンス化する必要がありますか?

4

2 に答える 2

2

DB は、データベースのバージョンが変更された (スーパー コンストラクター呼び出しで渡された) 場合、またはアプリケーションがアンインストールされた場合にのみ再作成されます。

DB バージョンが変更された場合、影響は onUpgrade() の実装に依存します。

于 2013-10-06T13:23:25.580 に答える