2

Androidサービスとそれを開始したアクティビティ(この場合はStartService()メソッドを介して発生しています)との関係はどうなっているのでしょうか?

サービスは、アクティビティが属する同じプロセス内で実行されている別のスレッドですか、それとも独自のスレッドを取得しますか?

私が尋ねる理由は、b /cアクティビティとそれが開始するサービスの両方からアクセスされるSQLiteDBを使用しているため、それらの間でDBアクセスを同期する適切な方法を決定する必要があるためです( SQLiteの組み込みマルチスレッドサポート、または自家製のプロセス間通信方式を実装します)。

注:アクセスを同期する方法を尋ねているのではなく、2つの別々のプロセスまたは別々のスレッドからDBにアクセスしている天気を把握しようとしています。これにより、これをどのように行うかが決まります。

注:生のAndroid / Javaではなく、Mono.Data.Sqliteを使用して.net/monoで記述しています。

どんな洞察も歓迎され、感謝されます、ありがとう。

4

1 に答える 1

3

アンドロイド開発者サイトにはあなたの答えが含まれていませんか?との詳細について説明しServiceますActivity

注意:サービスはホスティングプロセスのメインスレッドで実行されます。サービスは独自のスレッドを作成せず、別のプロセスで実行されません(特に指定しない限り)。つまり、サービスがCPUを集中的に使用する作業やブロック操作(MP3再生やネットワークなど)を実行する場合は、その作業を実行するためにサービス内に新しいスレッドを作成する必要があります。別のスレッドを使用することで、Application Not Responding(ANR)エラーのリスクを軽減し、アプリケーションのメインスレッドをユーザーによるアクティビティの操作専用に保つことができます。

于 2012-07-12T16:24:13.060 に答える