使用Phonegap和Kendo Mobile UI,我的应用程序从通过phonegap中的openDatabase()访问的SQL数据库中动态填充几个不同的列表视图。当我第一次启动应用程序并单击几个不同的列表时,应用程序会非常快速地导航和填充视图。翻阅屏幕超过15-20次后整个应用程序开始变慢,最终爬到难以使用的程度。
在iPhone4 - 5或模拟器上运行并没有什么区别。
启动应用程序新的第一个列表视图迎接我。 检查Web视图并查看文件列表我可以看到index.html。 在那个正常的文件夹下:脚本,图像,字体等..
点击列表项钻取到另一个列表视图。更改页面并填充新的列表视图后,我现在会注意到index.html父项下的新文件夹。一个名为“Extra Scripts”的文件夹 在Extra Scripts文件夹中,我找到了一个新的index.html文件(没有子文件)。点击它打开其内容,1行:
cordova.require('cordova/exec').nativeFetchMessages()
通过再次更改视图并填充另一个列表视图,单击另一个项目可进一步向下钻取。现在在第三个屏幕上,我注意到Extra Scripts文件夹中有2个index.html文件。
简而言之:只要显示带有列表的这些视图,就会在Extra Scripts上附加一个新文件。一旦这些文件的数量超过12个,设备就会变慢。我的应用程序中有其他视图不包含动态填充的列表视图,这些页面不会导致创建额外脚本。
我不确定Kendo Mobile ListViews或Phonegap 2.4本身是否存在问题。我还将Phonegap升级到2.9,但没有帮助。 我还有另一个运行相同版本(2.4)的应用程序并且它没有遇到任何这些问题,虽然它没有集中在列表视图上,但是存在多个列表视图并且没有问题出现。
这两个应用程序之间的另一个重要区别是,破坏的应用程序填充了来自phonegaps WebSQL数据库插件的数据,其中有效的应用程序从接受REST服务的ajax调用中提取数据。
以下是我创建和初始化列表视图的示例
<div data-role="view" id="equipmentPage" data-title="My Network" data-layout="mobile-tabstrip" >
<ul data-role="listview" class="equipmentlist" data-source="equipmentDS" data-template="equipmentListItemTemplate">
</ul>
</div>
<script type="text/x-kendo-template" id="equipmentListItemTemplate">
<div class="left wide liname">${name}</div>
<div class="hiddenField" style='display: none'>${id}</div>
<div class="right">
<div class="hiddenField" style='display: none'>${id}</div>
<div class="km-button badgeButton" id="badgeequipment_#=id#"></div>
<button class="editEquipment" style="vertical-align: top" data-role="button" data-icon="compose"> </button>
</div>
</script>
function equipmentliTemplateInit(){
lockOverlay = true
showLoadOverlay()
console.log("equipmentInit")
dbSelect("Select * from Equipment WHERE active = 1 and userId = " + ((temp.selected.friend > 0)?temp.selected.friend:temp.user.userID) + " AND siteId = " + temp.selected.site + "", function(tx, results){
var equipment = new Array();
for(var i = 0; i < results.rows.length; i++)
{
equipment.push(results.rows.item(i))
}
fillEquipment(equipment)
lockOverlay =false
hideLoadOverlay()
})
}
function fillEquipment(equipment)
{
equipment.sort(function(a, b){
var nameA = a.name.toLowerCase();
var nameB = b.name.toLowerCase();
if(nameA < nameB)
return -1
if(nameA > nameB)
return 1
return 0;
})
/*$(".equipmentlist").data('kendoMobileListView').destroy()
$(".equipmentlist").html("");
$(".equipmentlist").kendoMobileListView({
dataSource: kendo.data.DataSource.create({data: equipment }),
template: $("#equipmentListItemTemplate").html()
});*/
equipmentDS.data(equipment)
setBadges()
if(equipment.length < 1)
$(".equipmentlist").html("<li><center>There are no equipment to display.<br>Use the + button to add one.</center></li>");
defineListItemActions()
}
我尝试上传图片,但新用户无法上传。