1

私はコンテンツプロバイダーとメディアストアについて読んでいますが、この一般的な問題を解決するための最良の方法がまだわかりません。

簡単にするために、電子書籍を読むためのアプリを作成したいとします。ユーザーは、何らかの方法でデバイスストレージに電子書籍をコピーします(つまり、USBとコンピューターを使用して、ドロップボックスから電子メールを送信します...)。電子書籍はいくつかの形式(mobi、epub、...)である可能性があります。これらのファイルはメディアファイルではないため、その目的でメディアストアを使用することはできません。また、特定の種類のファイル(私の例では電子書籍など)の具体的な解決策は必要ないことに注意することも重要です。最もエキゾチックなファイルも含め、あらゆる種類のファイルに有効なソリューションが欲しいです。

デバイスストレージのスキャンを実行して、デバイスに保存されている電子書籍のリストを表示したいと思います。これは、アプリを最初に起動したときと、その後ユーザーがリストを更新したい場合に実行する必要があると思います。

私が見ている問題は、ユーザーが私のアプリの外部にある電子書籍ファイルの一部を削除する可能性があるため、もう存在しない古いエントリが表示される可能性があることです。もちろん、ユーザーが削除されたエントリを選択した場合はエラーメッセージを表示できますが、それに対するより良い解決策があるかもしれません。

私の質問は基本的に、ファイルリストを最新の状態に保つための最良の戦略は何かということです。「最善の戦略」とは、潜在的な重大なエラーを回避し、すべてをユーザーに対して可能な限り透過的にすることを意味します。

4

1 に答える 1

1

ユーザーが削除されたエントリを選択したときにエラーメッセージを表示することが、現在のところ最善の方法だと思います。また、ユーザーがアプリを起動した後、バックグラウンドサービスを開始してファイルリストを確認することもできます。ほとんどの場合、コードはユーザーの反応よりも速くなります。ユーザーがデータを操作する前に、アプリが自動的に更新されると思います。または、データの更新中に進行状況バーのみを表示し、完了したらデータ(ブック)を表示することもできます。

または、がありFileObserverます。しかし、それは不可能だと思います。ファイルを監視するには、バックグラウンドサービスが必要です。そして、それはバッテリーの寿命とデバイスのパフォーマンスには良くありません。

于 2013-03-02T12:11:15.433 に答える