2

大規模なブログにあるアプリを考えてみましょう(RSSフィードとほとんど同じように機能しますが、携帯電話用です)。ブログが新しい投稿を公開するたびに、アプリはユーザーの電話に新しい投稿に関する通知を作成します。

これらについて理解したいことがいくつかあります。

  1. その通知は私の電話のアプリによってプルされていますか、それともブログによってプッシュされていますか?
  2. アプリを起動していなくても、どうしてこれが機能するのですか?
  3. そのようなアプリを作成するためにAndroidプラットフォームのどのクラスとサービスが使用されていますか?

どうもありがとう。

4

4 に答える 4

3

あなたは簡単にこのようなことをすることができます:

  1. アプリでAlarmManagerを使用してアラームを設定しましたか
  2. アラームの受信者に、更新をチェックするサービスを開始してもらいます
  3. NotificationManagerを使用してユーザーに通知を表示します

これはポーリングソリューションであり、説明したようなほとんどの状況で問題なく、おそらくより優れているはずです。

ただし、プッシュソリューションが必要な場合は、サーバーが登録済みのAndroidデバイスにプッシュ通知を送信できるようにするAndroidC2DMを調べることができます。

編集

アプリは「起動せずに」どのように実行されますか?

いくつかの方法があります。1つは、どのアプリでもさまざまなデバイスイベントに登録できることです。それらの1つは、ブート完了イベントです。

2番目の方法は、AlarmManagerを使用することです。アプリがアラームを設定し、ユーザーがアプリから離れて、OSがアプリを閉じることを決定した場合でも、アラームは特定の時間に実行するように登録できます。このアラームがトリガーされると、サービスの開始など、アプリ開発者が好きなコードが実行されます。もちろん、ユーザーに通知せずにこれを行うと、特にサービスがバッテリーを消耗する場合など、問題になる可能性があります。

于 2012-06-20T22:42:07.403 に答える
1

もちろん、それを行う方法はたくさんありますが、一般的な場合、私は想像します:

  1. 電話で引っ張られます
  2. アプリが表示されていなくても、バックグラウンドでサービスを実行している可能性があります
  3. それは本当にアプリが何をするか次第です、あなたが知りたい特定の側面はありますか?
于 2012-06-20T22:43:00.523 に答える
1

一方通行:

  1. アプリは起動後にSercviceビアBroadcastを起動できます。こちらをご覧ください:Androidアプリケーションを自動起動する方法は?
  2. アプリはService起動時に起動します。サービスは、UIがなく、バックグラウンドで実行されることを除けば、アクティビティに似ています。
  3. Service時々新しい投稿を探します。たとえばRunnableScheduledThreadPoolExecutor
  4. Runnable新しい投稿を見つけて通知を行います

注:これはポーリングソリューションでもあります。代わりに、常に自分自身を呼び出すScheduledThreadPoolExecutorを使用するHandlerことも、時々スリープしてウェイクアップするスレッドを使用することもできます。私見ScheduledThreadPoolExecutorは「いい」方法です。

于 2012-06-20T22:48:01.097 に答える
1

その通知は私の電話のアプリによってプルされていますか、それともブログによってプッシュされていますか?

どちらかである可能性があります。

アプリを起動していなくても、どうしてこれが機能するのですか?

Android 3.1以降では、これらの機能を実行するには、アプリを少なくとも1回実行する必要があります。

それ以外にも、AlarmManager(プル用)やC2DM(プッシュ用)などを使用しています。どちらも「アプリを起動」する必要はありません。新しいメールを受信するには、Gmailのアクティビティを開いたままにしておく必要があります。メッセージ。

于 2012-06-20T23:38:45.380 に答える