Codename One – ToastBar“未检测到连接”
处理互联网连接不可用性(在移动设备上常见)的正确方法是什么?
也许这是一个很大的问题(或者不是),但是我没有find任何Codename One教程/文章/video或API来处理不稳定的Internet连接(这是移动设备的正常状态),没有错误或意外的行为。 我find了一个应用程序(Protonmail),它具有我想在应用程序中复制的function。 请看以下两个屏幕截图:第一个是Internet连接可用时,第二个是不可用时。
我注意到ToastBar不仅在Internet显式禁用时出现,而且每当服务器不可访问时。 当显示“未检测到连通性”消息时,应用程序暂停Internet活动,因此不会生成错误(并且用户写入的消息不会丢失)。 当应用程序服务器返回到可达状态时,ToastBar自动消失(不按“RETRY”button)。
在Codename One中以一种尽可能独立于特定应用程序的方式实现类似function的正确方法是什么? 是否有可能暂停Codename One应用程序的Internet活动,然后恢复它?
我在想像这样的事情:
- 该应用程序试图每隔几秒对服务器执行一个简单的请求(如ping),执行performBackgroundFetch方法;
- 如果在固定的时间内(即三秒)没有响应,则Internet活动暂停,并显示ToastBar;
- 如果有响应,则Internet活动恢复,重新启动暂停或失败的下载,并且ToastBar消失;
- 理想情况下,所有这些都可以与BrowserComponent一起使用。
您可以使用以下方法检测NetworkManager
类中的networking错误:
NetworkManager.getInstance().addErrorListener(e -> { // prevents the error from propagating into the ConnectionRequest class e.consume(); ToastBar.showMessage("Connectivity error, retry?", FontImage.MATERIAL_ERROR, ee -> ee.getConnectionRequest().retry()); });
正如这里所解释的: https : //www.codenameone.com/manual/files-storage-networking.html
吐司条形码只是以类似的方式提示并提供对连接请求的重试。 注意这是通用的全局方法。
这不适用于像“浏览器”这样的组件。 在那里你需要处理JavaScript方面的错误。
- 为什么这个由facebook生成的深层链接(applink)不起作用?
- cordova在蓝牙音箱上没有声音
- Phonegap /cordova – 从临时目录读取文件作为文本
- 如何通过iOS应用程序中的其他应用程序共享内容/数据,就像我们在Intent.ACTION_SEND的Android应用程序中所做的一样?
- 移动networking性能:将数据从networking服务器传输到手机的最有效的数据types是什么?
- 如何建立从iOS Safari到Android Chrome的Webrtc连接
- Facebook共享错误:“您请求的页面现在无法显示”
- glViewport在Android和iOS中的不同结果
- 在移动应用中embedded调查