キューアップロードマネージャーを作成しています。前の質問のガイダンスに対するこの回答で、サービスを使用してこれらの画像をアップロードします。データベースを使用して、正常にアップロードされたファイルと保留中のファイルを追跡することをお勧めしました。
私の最初の調査では、バインドされたサービスを作成したいと思うようになりました。これにより、写真がアップロードされたら UI を更新でき、開始されたサービスと同様に、それを作成したアクティビティとは独立して実行できるようになります。process=":something"
アプリマニフェストのディレクティブを介して、独自のプロセスで開始する必要があるようです。
私の質問は、N アクティビティ クライアントとアップローダ サービスの間で SQLite データベースを共有する最良の方法 (より良い方法がない限り) は何でしょうか?
疑似コードで、次のように機能することを想定しています。
// in an app
writeRecordToDb( . . . );
// start service
if( service doesn't exist )
{
// start service, and bind
}
// in the service:
if( shared db has another row )
{
doDownload( . . . );
if( download worked )
{
notifyActivity();
if( db has another row )
doDownload( . . . );
}
else
{
retryDownload( . . . );
}
}
これは正しい方法ですか?セルラー信号がほとんどまたはまったくない場合に、複数のアクティビティ インスタンスが写真のアップロードを要求するという問題を回避しようとしています。Service と Bound Service のドキュメントを読み終えたところです。気分は良いですが、あまり良くありません。