我正在使用Titanium SDK 3.4.0 GA,开发一款Android应用程序,从我的Web服务器加载远程图像到一个ImageView中。
问题出现在当设备在加载这些图片时失去连接时,因此,我需要一种方法来捕获错误(超时,404...)并设置“imageNotAvailable”的状态。 我正在使用MacOSX的Network Link Conditioner来复制这种情况,包括低延迟、丢包等。
为了证明这一点,我在我的test.js(Alloy控制器)中使用以下代码,并在我的test.xml中使用一个带有id = 'imageView'的ImageView的简单视图。
有时,会抛出一个异常:
TiDownloadManager:(pool-4-thread-1) [45929,118581] Exception downloading http://...
但不总是这样(远程连接超时似乎是无限的),无论是否出现此异常,我都无法捕获它(可能是由于异步请求),也无法触发ERROR事件。
问题出现在当设备在加载这些图片时失去连接时,因此,我需要一种方法来捕获错误(超时,404...)并设置“imageNotAvailable”的状态。 我正在使用MacOSX的Network Link Conditioner来复制这种情况,包括低延迟、丢包等。
为了证明这一点,我在我的test.js(Alloy控制器)中使用以下代码,并在我的test.xml中使用一个带有id = 'imageView'的ImageView的简单视图。
有时,会抛出一个异常:
TiDownloadManager:(pool-4-thread-1) [45929,118581] Exception downloading http://...
但不总是这样(远程连接超时似乎是无限的),无论是否出现此异常,我都无法捕获它(可能是由于异步请求),也无法触发ERROR事件。
function imageNotAvailable(e)
{
Ti.API.info('Error loading image:'+JSON.stringify(e));
$.imageView.image = "/imageNotAvailable.png";
}
function onLoad(e)
{
Ti.API.info('Image Loaded:'+JSON.stringify(e));
}
function setImageAndroid(image)
{
try{
$.imageView.image = 'http://....';
}catch(e){
$.imageView.fireEvent("error");
}
$.imageView.addEventListener("error", imageNotAvailable);
$.imageView.addEventListener("load", onLoad);
}
抱歉我的英语不好!谢谢!