I have a simple question. I'm trying to insert current date into database every 1 second, but when I try to do this, the date is always the same, and I want to have a current date. Next problem is, when I try to close database with button "Stop", I'm getting this exception:
01-27 13:57:51.063: E/AndroidRuntime(12964): FATAL EXCEPTION: Thread-144
01-27 13:57:51.063: E/AndroidRuntime(12964): java.lang.IllegalStateException: attempt to re-open an already-closed object: SQLiteDatabase: /data/data/pl.pawelfrydrych.flyingball/databases/baza.db
01-27 13:57:51.063: E/AndroidRuntime(12964): at android.database.sqlite.SQLiteClosable.acquireReference(SQLiteClosable.java:55)
01-27 13:57:51.063: E/AndroidRuntime(12964): at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1437)
01-27 13:57:51.063: E/AndroidRuntime(12964): at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1339)
01-27 13:57:51.063: E/AndroidRuntime(12964): at pl.pawelfrydrych.flyingball.MainActivity.insertData(MainActivity.java:146)
01-27 13:57:51.063: E/AndroidRuntime(12964): at pl.pawelfrydrych.flyingball.MainActivity$2.run(MainActivity.java:248)
insertData method:
public void insertData() throws InterruptedException {
ContentValues values = new ContentValues();
myDBAdapter = new Database(this).open();
while(true) {
Date date = new Date();
long millis = System.currentTimeMillis();
values.put(Database.LEFT_POSITION, xPosition);
values.put(Database.RIGHT_POSITION, yPosition);
values.put(Database.GPS, GPSposition);
values.put(Database.TIME, date.toString());
if(myDBAdapter.db != null) {
myDBAdapter.db.insert("baza", null, values);
Thread.sleep(1000 - millis % 1000);
} else {
Log.d(Database.DB_NAME,"db is null");
}
}
}
MainActivity onClick method:
public void onClick(View v) {
switch(v.getId()){
case R.id.bStart:
Thread watek = new Thread(){
public void run(){
try {
Looper.prepare();
insertData();
} catch (InterruptedException e) {
Log.v("Thread", "Problem with inserting insertData method");
e.printStackTrace();
}
}
};
watek.start();
break;
case R.id.bStop:
myDBAdapter.close();
break;
}
}