我正在寫一個Android應用程序,其中我正在從手機的傳感器獲取加速度計數據,直到用戶退出。之後,我修改數據並嘗試將其保存到現有的數據庫中。一切工作正常,但當我打電話給我的saveToDatabase()方法在onSensorChanged方法,然後該應用程序開始工作非常緩慢,變得沒有響應和崩潰不久後。 所以,問題是,我打電話saveToDatabase()太往往 ...Android:如何將傳感器數據保存到數據庫?
有沒有辦法避免這種情況?
- 可以與的ArrayList /鏈表/ ArrayDeque其中所述傳感器數據都被收集並保存到DB 5分鐘後?
- 或把所有東西都放在緩衝區當用戶退出然後從中提取所有內容到數據庫?
修改saveToDabase方法,以便它使用beginTransaction而不是insert -method?
protected void saveToDatabase(){ contentValues.put("SensorSensitivity", sensorSensitivity); contentValues.put("AccDataX", accelerometerData[0]); contentValues.put("AccDataY", accelerometerData[1]); contentValues.put("AccDataZ", accelerometerData[2]); contentValues.put("timeStamp", System.currentTimeMillis()); long affectedColumnId = sqliteDatabase.insert("tName", null, contentValues); contentValues.clear(); }
從服務中調用此函數,以便應用程序中的其他功能不會受到影響 – sachin
除了sachin所說的之外,我喜歡您節省一堆點並將它們作爲批處理插入的想法。 – Sparky