jab*_*bar 0 java android websocket cordova
我是Android的新手,但熟悉网络编程.目前我正在使用phonegap编写应用程序.
我的应用程序通过websockets接收新闻并将其显示给用户.
我的问题是,当我的应用程序被用户关闭时,我无法使用它WebView来接收新闻.经过一段时间的搜索,我找到了一个可以用Java运行后台服务的Phonegap插件:https://github.com/Red-Folder/bgs-core.
但我是Java的新手,我不知道如何在后台服务中运行websockets(autoban.ws for Android)来接收新闻并在通知栏中显示它.
我认为你应该采用不同的方法.您尝试做的事情在Android上是不可能实现的.但您可以使用Google Cloud Messaging将数据推送到安装了应用的设备.有点像这样:

只要您有一些服务器,例如Google App Engine项目,您就可以将任何数据推送到您的应用程序,您也可以定位特定设备.大多数应用都使用Google Cloud Messaging,因为它非常高效且电池友好,而且速度非常快.如果没有Google Cloud Messaging或类似的东西,您必须定期轮询服务器并检查更新.这会唤醒设备并耗尽电池 - 尤其是当您需要频繁更新时.Google Cloud Messaging解决了所有这些问题,但如果您以前从未做过类似的事情,那么它也会有更多的工作.但由于您是一名Web开发人员,我认为您应该能够处理它.
我的问题是,当我的应用程序被用户关闭时,我无法使用webview接收新闻.搜索后,我找到了一个可以用Java运行后台服务的Phonegap插件:https: //github.com/Red-Folder/bgs-core.
一般来说,这是一个坏主意.它不适用于Android.你不能永久地在后台运行任何东西.即使你可以,这样的设备Service也会非常快地耗尽电池,因为设备永远无法入睡.即使你只是像我上面所描述的那样进行轮询,你仍然需要每隔x分钟唤醒设备并检查更新.所以我可以重申:使用Google Cloud Messaging.
不过,有关于如何使用bgs-core插件的非常详细的教程:
您还可以在GitHub上找到示例项目.
但我是Java新手,不知道如何在后台服务中运行websockets(autoban.ws for Android)来接收新闻并在通知栏中显示它.
Android没有websockets的原生解决方案,所以我建议你使用websocket库.您可以选择以下三个库中的一个:
在以下示例中,我将使用AutobahnAndroid
首先,您应该完成构建自己的插件教程!本教程假设您已经了解了如何创建插件的基础知识,但由于您对所有这些都相对较新,因此您可以查看此答案.它详细介绍了如何创建基本插件,并且应该涵盖其他教程中大部分(如果不是全部)缺少的信息.
完成创建插件后,与AutobahnAndroid建立连接非常简单:
final WebSocketConnection connection = new WebSocketConnection();
try {
connection.connect(url, new WebSocketHandler() {
@Override
public void onOpen() {
// Web socket connection has been opened
}
@Override
public void onTextMessage(String payload) {
// Received text message
}
@Override
public void onClose(int code, String reason) {
// Web socket connection was closed
}
});
} catch (WebSocketException e) {
Log.d(LOG_TAG, "Could not connect!", e);
}
Run Code Online (Sandbox Code Playgroud)
你也可以像这样发回数据:
connection.sendTextMessage(someMessage);
Run Code Online (Sandbox Code Playgroud)