嘿,这可能被问过几次,但我似乎无法找到它。
Androids C2DM服务允许在应用程序不活动时向其发送消息吗? 因此从服务器发送通知很有用。 问题是,当用户使用该应用程序并且有更新时 从服务器,我应该如何通知他?我可以使用刷新按钮,但我不愿意。
所以我的问题是如何才能实现?
如果用户在线,C2DM服务如何运作?是否可以正常处理该事件以更新内容?
或者我应该使用某种后台线程/ AsyncTask / Service?我不确定哪一个适合这项任务。
从逻辑上讲,每隔几秒就用http请求到达服务器似乎效率低下,所以如果可能的话,C2DM似乎是更好的选择。
对此事的任何想法?
答案 0 :(得分:2)
Androids 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;
}
谢谢:)