我在onCreate
中使用了一个插入查询,我希望删除onDestroy
中的所有数据,但我无法使其工作,每次启动应用程序时数据都会加倍。似乎onDestroy
无效。
结帐我的代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_student_view);
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
myDbHelper = new DatabaseHelper(this, DATABASE_NAME, null,
DATABASE_VERSION);
sqlHandler = new SQLHandler(this);
mDb = myDbHelper.getWritableDatabase();
String query = "INSERT INTO scholar_table(Name,Top,Continent,Region,Location,Introduction,Alumni) " +
"values ('Wesleyan University Philippines','290','Luzon','Region 3','Nueva Ecija','WUP Intro','WUP Alumni')";
sqlHandler.executeQuery(query);
}
@Override
public void onDestroy(){
super.onDestroy();
sqlHandler = new SQLHandler(this);
mDb = myDbHelper.getWritableDatabase();
String query = "DELETE * FROM scholar_table";
sqlHandler.executeQuery(query);
finish();
}
答案 0 :(得分:1)
尝试将基本代码放到onStop()
方法中,可能会帮助您解决问题
基本上,从来没有保证会调用onDestroy(),在某些情况下,你的app等进程会被直接杀死,无论如何都会绕过方法调用。
看看这个: Activity OnDestroy never called?
而且:
http://developer.android.com/reference/android/app/Activity.html#onDestroy%28%29
答案 1 :(得分:0)
我建议将您的SQLite放入另一个文件中。
制作你的onCreate():
Log.v(TAG, "Number of rows:" + String.valueOf(mLocalDB.numberOfRows()));
mLocalDB = new LocalDB(this, "db", null, 1);
mLocalDB.insert("John", "Smith");
Log.v(TAG, "Number of rows:" + String.valueOf(mLocalDB.numberOfRows()));
并在你的onDestroy:
Log.v(TAG, "Number of rows:" + String.valueOf(mLocalDB.numberOfRows()));
mLocalDB.deleteRow(1);
Log.v(TAG, "Number of rows:" + String.valueOf(mLocalDB.numberOfRows()));
可能会更改deleteRow的参数以满足您的需求,或删除每一行:
for(int i = 0;i<mLocalDB.numberOfRows();i++){
mLocalDB.deleteRow(i);
}
或&#34;我&#34;可以从1开始。