0

あらゆるオペレーティング システムのサービスに関する私の知識では、サービスは通常バックグラウンドで実行され、必要な作業をすべて実行します。

しかし、Android サービスに初めて慣れたときは戸惑いました。

アプリケーションが動作しているときにのみ実行されるようで、私にとっては、洗練されたスレッドではありません。

私はこれをすべて間違っていますか?アプリケーションが実行されていないときに実行されるサービスを作成するにはどうすればよいですか? (更新を確認し、ユーザーがそれらを開くことを選択した場合にアプリケーションに誘導する通知を作成できるようにするため)。プッシュ通知はそれと関係がありますか?

編集:

これまでの回答に感謝します。私の問題は、デバイスが起動したときにサービスが正式に開始されるという事実のようです。アプリの起動時に startService を呼び出しますが、それは役に立たないようです。アプリがオフになってもサービスは終了します(起動されていない限り)また、stopServiceを呼び出すことはありません

4

2 に答える 2

2

(バックグラウンド) サービスで実行される長時間実行タスクを実装しようとしている場合は、サービス内で 1 つ以上のスレッドを開始する必要があります。したがって、このサービスは、ユーザー インターフェイスを持たなくても、アプリケーション コンテキストを持つ機会を提供するだけです ;) これは、一種のコンテナーと見なすことができます。

このページでは、Android のさまざまなスレッド アプローチについて概要を説明しています。ご覧のとおり、サービスには独自のスレッドがありません。

とにかく、あなたの場合、AlarmManagerおそらくより良いオプションのようです。常に情報をポーリングするためにサービスを実行すると、CPU とバッテリーをかなり消費する可能性があります (たとえば、この投稿を参照してください)。そのため、常に実行されるスレッドを避けるようにしてください。

サーバーから更新に関する情報をプッシュできる場合は、それで問題ありません。この場合は、Google のクラウド メッセージングを調べてください。

于 2013-08-11T13:11:28.300 に答える
0

私の質問に最初にコメントしたマイケルは、 startService() に関する彼のコメントで正しかった

したがって、次のようになります。

  • 私の受信機は起動時にのみアクティブになり、AlarmManagerを使用してサービスを特定の間隔に合わせます。
  • 私がしたことは、アクティビティをサービスにバインドすることでした。サービスがオフで、バインドしてバインドを解除した場合、アプリが終了するまでに、アプリを維持するものは何もありませんでした。
  • startService がまだオンになっていない場合は、サービスが適切に開始されていることを確認するだけで、サービスを常に有効に保つことができました
  • また、サービスとは何かについて非常に素晴らしい説明をしてくれたTrinimonにも感謝します。また、過度のポーリングで CPU を過負荷にしないことの重要性についても説明してくれました。(これは一種のトレードオフの状況です)

皆さんお元気で :)

于 2013-08-11T16:35:10.920 に答える