Webサービスとのイベント同期を使用してアプリでカスタムカレンダーを作成しようとしています。
すべてがうまくいきます(まあ、実際にはそうではありません)。
カレンダーアクティビティは、AsyncTask
当月のイベントを取得してデータベースに保存するために開始され、onPostExecute
メソッドはビューを更新して毎日適切にマークを付けます。
私の問題は、ユーザーがカレンダーアクティビティに到達し、すぐにメインアクティビティに数回戻るときに発生します。たとえば、
Main Activity
> Calendar Activity
(戻るボタンを押す)>> Main Activity
(Calendar Activity
戻るボタンを押す)>..。
この時点で、アクティビティがフリーズするdatabase lock has not been available for 30 sec.
か、アプリがクラッシュします。SQLiteConstraintException: error code 19
編集:
SQLiteConstraintException
動作はもう起こりません
私のアプリでは更新が非常に重要であるため、カレンダーアクティビティを再入力するたびに、データベースを削除し、サーバーの新しいデータを再入力します。これは同じですが、この時点でロックが行われます。
編集:
Delete > Insert
スタイルを次 のように変更しました:Update
すべてのデータ(flag
列を設定= 0)>Insert
新しいデータ(flag
列を設定= 1)>Delete
(flag
列= 0を設定)
私はすでにこのソリューションを試しましたがAsyncTask
、アクティビティの終了をキャンセルして成功しませんでした
問題は、自分がしていることのプロセスを完全に理解していないことだと確信しているので、本当に重要な(または基本的な)何かが欠けています。
私のコードを改善したり、正しい方向に向けたりする手助けをいただければ幸いです。
前もって感謝します!
編集:
私のアプリケーションには
Aplication
、単一のデータベース接続(getWriteableDatabase();
)の作成を担当するがあり、この独自の接続は到達可能なトラフMyApp.getDatabase();
メソッドです。