Phonegap-检测网络活动
Phonegap - Detecting network activity
场景
我制作了一个phonegap 1.0.0应用程序,通过谷歌地图加载当前位置。我还创建了一个插件,在屏幕顶部显示活动指示器,即在iPhone的状态栏上。
function onBodyLoad()
{
document.addEventListener("deviceready",onDeviceReady,false);
};
function onDeviceReady()
{
//Get the plugin object
var ai = window.plugins.ActivityIndicator;
//Stop the spin, if any activity was going on earlier
ai.end();
if(navigator.geolocation) {
//Start spinning, indicating that some network activity is going on
ai.set();
navigator.geolocation.getCurrentPosition(initSearch);
}
else alert("Please try reloading");
//Stop spinning after 10 seconds
window.setTimeout(ai.end, 10000);
};
插件的Javascript代码如下:
var ActivityIndicator = function() {};
ActivityIndicator.prototype.set = function()
{
PhoneGap.exec("ActivityIndicator.start");
};
ActivityIndicator.prototype.end = function()
{
PhoneGap.exec("ActivityIndicator.end");
};
ActivityIndicator.install = function() {
if(!window.plugins)
window.plugins = {};
window.plugins.ActivityIndicator = new ActivityIndicator();
return window.plugins.ActivityIndicator;
};
PhoneGap.addConstructor(ActivityIndicator.install);
插件的Objective-C代码如下:
#import <Foundation/Foundation.h>
#ifdef PHONEGAP_FRAMEWORK
#import <PhoneGap/PGPlugin.h>
#else
#import "PGPlugin.h"
#endif
@interface ActivityIndicator : PGPlugin {}
-(void) start:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options;
-(void) end:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options;
@end
@implementation ActivityIndicator
- (void)start:(NSMutableArray *)arguments withDict:(NSMutableDictionary *)options
{
UIApplication* app = [UIApplication sharedApplication];
app.networkActivityIndicatorVisible = YES;
}
- (void)end:(NSMutableArray *)arguments withDict:(NSMutableDictionary *)options
{
UIApplication* app = [UIApplication sharedApplication];
app.networkActivityIndicatorVisible = NO;
}
@end
问题
正如您在上面的代码片段中所看到的,我已经将旋转的Timeout设置为在10秒后停止。
问题
如何在有任何网络活动时启动/停止activityIndicator?
你本可以使用notificationEx而不是自己做,但这对知识有好处:(
无论如何,地图调用是基于ajax的吗?如果是,并且您正在使用jQuery,则分配.ajaxStart()
和.ajaxStop()
函数。
我做以下事情:
function onDeviceReady() {
/* ===============
// Bind Ajax calls with
// activity Indicator
// =============== */
$(document).ajaxStart(function() {
navigator.notificationEx.activityStart();
}).ajaxStop(function() {
navigator.notificationEx.activityStop();
});
//other stuff
}
这样,当活动发生时,所有ajax都将显示在活动中。
更新:对于版本0.8上的Zeptojs或仅在版本0.8上实现的高级ajax全局,请使用以下命令:
function onDeviceReady() {
/* ===============
// Bind Ajax calls with
// activity Indicator - ZEPTO
// =============== */
$(document).on('ajaxStart',function() {
navigator.notificationEx.activityStart();
}).on('ajaxStop',function() {
navigator.notificationEx.activityStop();
});
//other stuff
}
相关文章:
- 使用Dnamics CRM 2011中的JavaScript读取子网格的所有记录,而不考虑活动页面
- 通过Magento的网络服务检索运费
- Google/html5语音识别JavaScript SDK Chrome网络工具包SpeechRecognition
- 使用acess代币登录Facebook,并通过网络应用程序离线发布
- 字符串在将其传递给另一个活动Android JavaScript时读取Null
- 如何使用密码检测网络中的状态连接
- 活动选项卡's源代码-获取变量s值
- 在Angular 2中布线期间保持零部件处于活动状态
- 在ajax成功后,cluetip不适用于首次点击活动元素
- 如何使bxslider仅在移动视图中处于活动状态
- ASP.NET网络摄像头显示
- JQuery中的活动搜索栏
- 如何在OpenERP中实现网络摄像头
- 悬停下拉菜单即使在鼠标移出后也保持活动状态
- 将js添加到wordpress中以突出显示css活动菜单
- jQuery webcam/flash:如何检测网络摄像头是否处于活动状态
- Phonegap-检测网络活动
- 监控用户点击广告活动(adsense或其他网络)
- 这个网页是如何更新的?萤火虫显示没有网络活动
- FirefoxOS调用WebActivity“;份额;不会'不显示网络活动的菜单