私はAndroidアプリケーションを書いています。
- バックグラウンド サービス 1。一定の間隔でセンサー値を読み取ります (たとえば、プログラムは 5 分ごとに 30 秒間センサー値を読み取り、測定期間中は 1 秒あたり 2 回値が読み取られます)。
- センサー値を分析し、それらからいくつかのメトリックを計算するバックグラウンド サービス 2、
- バックグラウンド サービス 3。3 ~ 7 日に 1 回実行され、データベースから古いデータ (センサー値とメトリックの両方) が削除されます。
- ユーザーがアプリケーションを開いて何らかのボタンを押すと、センサーの値やメトリックの一部が表示される GUI アクティビティ。
と の2 つのテーブルがありSensorData
ますMetrics
。バックグラウンド サービス 1 は に書き込みSensorData
ます。バックグラウンド サービス 2 は からSensorData
読み書きしMetrics
ます。バックグラウンド サービス 3 は、両方のテーブルから行を削除します。GUI アクティビティは、両方のテーブルから読み取ります。
センサーの値とメトリック用にスレッドセーフなストレージを実装する方法を考えていました。
明らかな解決策は、組み込みの SQLite データベースを使用することです。
次の質問があります。
- この設定で安全に使用できますか?
- Android の SQLite は 2 つの数値 (
long
とdouble
) の書き込みを 1 秒あたり 2 回処理しますか? - 同時アクセスをサポートしていますか (GUI アクティビティがクエリを発行し
SensorData
、バックグラウンド サービス 1 が同じテーブルに同時に書き込もうとするとどうなりますか) ?