我正在构建一个应用程序,它使用GCM与服务器进行一些通信。除了一个,一切都很好。我实现了一个即时聊天,它向另一个android设备发送通知,告诉它有一条新消息。如果其他设备点击noti,它将进入即时聊天室回复,或者只是看到新更新的消息。
我是通过比较来自服务器的一个标志来做到这一点的;如果消息是第一个发送的,并且应用程序或设备正在睡觉,它将生成一个noti,它可以链接到新的聊天室。如果消息来自当前正在运行的聊天室,它将只更新它。
但是你可以很容易地看到,如果接收消息的设备没有被唤醒,它就什么也做不了。
因此,我想知道设备状态是否不确定消息是来自新的聊天室,还是来自当前的聊天室。如果它来自一个新的聊天室(当设备正在睡觉时),它将显示一个noti,这将导致新建立的聊天室,如果它是从当前的聊天室,它将只是更新聊天日志。
发布于 2014-11-20 16:12:08
我通过这个链接解决了这个问题。我如何判断Android应用程序是否运行在前台?
通过Gadenkan的回答,我创建了一个activityManager对象来检查我的应用程序是否运行在前台。
因此,如果它没有在前台运行,它将调用整个应用程序从主要活动开始到聊天室。如果没有,它只会告诉广播监听器通过GCM追加新消息。
发布于 2014-11-18 19:25:55
我认为你需要学习用于安卓的PowerManager API。PowerManager链路
我可以告诉您,您可以使用isInteractive()
或isScreenOn()
方法来检查屏幕是否关闭,这取决于您使用的是哪个版本的android (isScreenOn在API 20中被废弃,并被isInteractive所取代)。
,但是我建议不要使用 isScreenOn()
,不能保证设备会在屏幕关闭后进入休眠状态。这是贴牌的。
最好的方法就是使用Wakelock Wakelock链路让设备保持清醒。
https://stackoverflow.com/questions/27001548
复制相似问题