2011-07-19 13 views
0

私はアプリのアイデアに取り組んでおり、アプリケーションでスレッドとサービスがどのような役割を果たすのかを本当に理解したいと考えています。非常にシンプルなアプリケーションでは、リストビューをある種のデータベースから週に1回更新したいと思っています。ボールパーク100アイテム。だから私が今まで理解していることから、リストビューからなるUIを持つアクティビティを用意します。それから私はサービスを受けます。このサービスではスレッドがあり、このスレッドはダウンロードを担当します。サービスは、アプリが一時停止または停止してもダウンロードを続行できることを確認するためのものです。次に、メッセージ/ runnable/asyncTaskを使用して、このデータをスレッドから自分のアクティビティ/ UIに送信することができます。私はこれを考えていますか?Androidスレッド/サービスに関する質問

+0

IntentServiceを見てください – Merlin

答えて

0

私はあなたがBroasdCastReceiverを逃したと思う:

私はあなたがアラームをインストールする必要があります。この作業のために週に一度

を更新するリストビューを望みます。アラームは、通常、電話がスリープしていないことを確認するために、ブロードキャストレシーバを開始します。このBroadcastReceiverはサービスを開始する必要があります。私が知っている、それは複雑に聞こえるが、その実装が:)

ここ

残りの質問のための私のコメントですかなりOK:私は、リストビューから成るUIを持つことになります活性を有することになる

正しい

私は、サービスを持っています。このサービスではスレッドがあり、このスレッドはダウンロードを担当します。

それも正しい。

メッセージ/ runnable/asyncTaskを使用して、このデータをスレッドから自分のアクティビティ/ UIに送信できます。

サービスがメインアクティビティが実行されているかどうかわからないため、これは失敗する可能性があります。リストとデータを共有ファイルに書き込むと、サービスとアクティビティの両方にアクセスできますか?

+0

私は本当に共有ファイルのアイデアが気に入っています。また、あなたの洞察に本当に感謝しています。だからboardcastrecieverで、私はダウンロードサービスを開始するためにコード化される放送受信機を起動させるために警報を使用するでしょう。サービスは、アクティビティとは別のUIなしで実行されます。サービスはファイル "x"にロードされます。次にアクティビティが開始されると、新しいデータが入っているファイル "X"からリストが更新されます。 – AndrewJM

0

あなたのアプリが説明したように本当にシンプルであれば、サービスやスレッドを使わなくてもそれを行うことができます。

  1. コンテンツを表示するには、ListViewでアクティビティが必要です。これは必須です
  2. インターネットにリクエストしてデータを取得する必要があります。この部分を別のスレッドなしで実装すると、UIがブロックされ、Android OSにアプリが終了することがありますが、5秒以内にコンテンツを返すことはできません。この場合、スレッド化はオプションになりました。

データをロードするために別のスレッドを使用する場合は、スレッドをホストするサービスは必要ありません。 1週間に1回だけリモートサービスをチェックしているので、アクティビティが起動されるたびにリモートサービスをポーリングする必要があります。

データを読み込むサービスを使用すると、アプリが必要以上に複雑になると思います。