1

私のプログラムは、バックグラウンドでインターネットから1時間ごとにデータをダウンロードし、データベースを更新するリモートサービスで構成されています。次に、サービスは事前定義されたデータについてユーザーに警告します。

アクティビティは、アラート設定およびその他のパラメータを設定するために行われます。サービスは、アクティビティなしで自分で動作できる必要があります。

はSQLデータベースをどこに置くべきか疑問に思っていましたか?

アクティビティ内で作成したとしましょう。サービスからアクセスできますか?次に、AIDL接続を構築する必要がありますか、それともデータベースを直接読み取ることでデータベースにアクセスできます(アクティビティが機能していない場合でも)??

アドバイスをいただければ幸いです。

追伸:私はまだアンドロイドの初心者なので、私は簡単なものを探しています;)

4

2 に答える 2

1

アクティビティと同じプロセスにサービスがある場合、どこで作成し、どこにアクセスしたいかは問題ではありません。AIDL は、別のプロセスでサービスを実行している場合にのみ必要になります。

于 2012-05-17T10:21:47.793 に答える
1

@black crowが述べたように、アクティビティとサービスが同じプロセスにある場合、データベースをどこに作成するかは問題ではありません。それらが別々のプロセスである場合、私の見解では、サービスにデータベースを作成し、アクティビティからデータベース データにアクセスするメソッド (たとえば、getAllData) を作成することをお勧めします。したがって、データベースとのすべてのやり取りはサービス内で行われます。アクティビティとサービスが異なるプロセスにある場合は、ContentProvider も作成できるため、アクティビティとサービスは論理的に分割されます (アクティビティは ContentProvider からデータを読み取るだけで、サービスはそこにデータをプッシュします)。私の見解では、このアプローチはすべてのニーズに適合します。

于 2012-05-17T11:05:54.873 に答える