1

嘿,这可能被问了几次,但我似乎找不到。

Androids C2DM 服务允许在应用程序不活动时向其发送消息,对吗?所以从服务器发送通知很有用。问题是,当用户使用应用程序并且服务器有更新时,我应该如何通知他?我可以使用刷新按钮,但我宁愿不使用。

所以我的问题真的是如何实现这一目标?

如果用户在线,C2DM 服务如何操作?它的工作原理是否相同,我可以只处理该事件来更新内容吗?

或者我应该使用某种后台线程/AsyncTask/Service?我不确定其中哪一个适合这项任务。

从逻辑上讲,每隔几秒钟就通过 http 请求到达服务器似乎效率低下,因此如果可能的话,C2DM 似乎是更好的选择。

有什么想法吗?

4

1 回答 1

2

Android 的 C2DM 服务允许向应用程序发送消息,无论应用程序是否处于活动状态。也就是说,即使用户当前正在使用应用程序,或者应用程序正在后台运行,设备也可以接收消息。

当您收到来自 C2DM 服务器的消息时,首先检查您的 C2DMReceiver 类,如果您的应用程序在后台运行,如果是,则在通知(状态栏)中显示消息,否则您可以通过 Toast 或 AlertDialog 框显示消息。

以下代码可以检查 App 是否在后台运行:

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 回答