1

ねえ、これはおそらく数回尋ねられましたが、私はそれを見つけることができないようです。

Androids C2DMサービスでは、アプリケーションがアクティブでないときにメッセージをアプリケーションに送信できますか?したがって、サーバーから通知を送信すると便利です。ユーザーがアプリを使用していて、サーバーからの更新がある場合、どのように通知すればよいですか?更新ボタンは使用できますが、使用できません。

だから私の質問は本当にそれをどのように達成できるかということです。

ユーザーがオンラインの場合、C2DMサービスはどのように機能しますか?同じように機能しますか?そのイベントを処理してコンテンツを更新できますか?

または、ある種のバックグラウンドスレッド/ AsyncTask /サービスを使用する必要がありますか?そのうちのどれがそのタスクに適しているかわかりません。

論理的には、数秒ごとにhttpリクエストでサーバーに到達するのは非効率的であるように思われるため、可能であればC2DMの方が適しているようです。

その件について何か考えはありますか?

4

1 に答える 1

2

AndroidのC2DMサービスでは、アプリがアクティブであるかどうかに関係なく、アプリケーションにメッセージを送信できます。つまり、ユーザーが現在アプリを使用している場合や、アプリがバックグラウンドで実行されている場合でも、デバイスはメッセージを受信できます。

C2DMサーバーからメッセージを受信したら、最初にC2DMReceiverクラスをチェックインします。アプリがバックグラウンドで実行されている場合は、通知(ステータスバー)にメッセージを表示します。そうでない場合は、ToastまたはAlertDialogボックスを介してメッセージを表示できます。

次のコードは、アプリがバックグラウンドで実行されているかどうかを確認できます。

public static boolean isApplicationInBackground(final Context context) {
        final ActivityManager am = (ActivityManager) context
                .getSystemService(Context.ACTIVITY_SERVICE);
        final List<RunningTaskInfo> tasks = am.getRunningTasks(1);
        if (!tasks.isEmpty()) {
            final ComponentName topActivity = tasks.get(0).topActivity;
            if (!topActivity.getPackageName().equals(context.getPackageName())) {
                return true;
            }
        }
        return false;
    }

ありがとうございました :)

于 2012-05-29T08:48:57.050 に答える