嘿,这可能被问过几次,但我似乎找不到。
Android C2DM 服务允许在应用程序未激活时向其发送消息,对吗? 所以从服务器发送通知很有用。 问题是,当用户正在使用该应用程序并且有更新时 从服务器上,我应该怎么通知他?我可以使用刷新按钮,但我宁愿不使用。
所以我的问题是如何实现这一点?
如果用户在线,C2DM 服务如何运作?它的工作原理是否相同?我可以只处理该事件来更新内容吗?
或者我应该使用某种后台线程/AsyncTask/服务?我不确定他们中的哪一个适合这项任务。
从逻辑上讲,每隔几秒就用一个 http 请求到达服务器似乎效率很低,因此如果可能的话,C2DM 似乎是更好的选择。
有什么想法吗?
最佳答案
Android C2DM 服务允许向应用程序发送消息,无论应用程序是否处于 Activity 状态。 也就是说,即使用户当前正在使用应用程序或应用程序正在后台运行,设备也可以接收消息。
当您收到来自 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;
}
谢谢你:)
关于android - 如何在应用程序打开时获取服务器更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10795689/