巴扎黑2017-04-17 17:05:14
申し訳ありませんが、もう一度自問します。私はこの問題をコードレベルで解決しました。解決策は次のとおりです。
ContentProvider の更新、挿入、削除が UI の表示に影響を与える場合、コード内で DB を直接操作することはできず、代わりに ContentProvider を一律に使用し、ContentObserver を登録する必要があります。 UIを切り替えるためにUriを監視します。
ContentProvider の動作が UI に影響しない場合は問題ありません。内部でDBを直接操作することも可能です。
迷茫2017-04-17 17:05:14
ContentProvider の定義によれば、これはさまざまなアプリケーションでデータを交換するための標準 API であり、アプリケーションが他のアプリケーションにデータを公開する必要がある場合に使用でき、他のアプリケーションは ContentResolver を通じて公開されたデータを操作して公開できます。 ContentProvider を介して、独自のデータ操作インターフェイスを使用して、他のアプリケーションはこのインターフェイスを通じて対応する追加、削除、変更、およびクエリ操作を実行できます。ただし、ContentResolver を介した操作の本質は ContentProvider の操作を呼び出すことであり、その操作では SQLiteOpenHelper のデータベースが使用されます。したがって、個人的には書き直す必要はないと思いますが、これも個人的な意見ですので、実際に試してみると結果がわかります。
天蓬老师2017-04-17 17:05:14
それもそのはず、data経由で直接書き込まれたデータはアプリケーションのプライベートデータなので他のアプリケーションからはアクセスできませんが、SDカード内でDBファイルを操作すればアクセスできるようです。