Appcelerator在Android上缓慢打开windows
我在一个物理设备上运行一个合金项目(三星Galaxy S4),在第一次打开事件中,窗口的打开速度非常慢。例如,按一下按钮打开一个窗口可能需要10秒钟,这取决于窗口包含的“stuf”量。但是我不认为我在做任何不寻常的事情,请看下面的示例窗口。 当车窗打开一次然后关闭后,第二次几乎立即打开。因为它不知何故“在记忆中” 示例窗口:Appcelerator在Android上缓慢打开windows,android,titanium,appcelerator,appcelerator-titanium,appcelerator-alloy,Android,Titanium,Appcelerator,Appcelerator Titanium,Appcelerator Alloy,我在一个物理设备上运行一个合金项目(三星Galaxy S4),在第一次打开事件中,窗口的打开速度非常慢。例如,按一下按钮打开一个窗口可能需要10秒钟,这取决于窗口包含的“stuf”量。但是我不认为我在做任何不寻常的事情,请看下面的示例窗口。 当车窗打开一次然后关闭后,第二次几乎立即打开。因为它不知何故“在记忆中” 示例窗口: <Alloy> <Window> <View id="container" class="container"> <View
<Alloy>
<Window>
<View id="container" class="container">
<View id="imageContainer">
<ImageView id="imageView"></ImageView>
</View>
<View id="infoContainer">
<Label id="infoHeaderLabel">L('logged_in_as')</Label>
<View class="divider top5"></View>
<Label id="nameLabel" class="top10"></Label>
<Label id="emailLabel" class="top5"></Label>
<Label id="organizationLabel" class="top5"></Label>
<View class="divider top10"></View>
</View>
<TableView id="tableView">
<TableViewRow identifier="coach" title="L('coach')" hasChild=true if="!Alloy.Globals.usertypeIsCoach && !Alloy.Globals.isFreeTierUser"></TableViewRow>
<TableViewRow identifier="export" title="L('button_export')" hasChild=true if="Alloy.Globals.localDatabaseDoesExist"></TableViewRow>
<TableViewRow identifier="logout" title="L('button_logout')" hasChild=true></TableViewRow>
</TableView>
</View>
</Window>
该窗口确实需要另外两个文件,它们只是实用程序模块,其中“arrowdb”具有依赖性,并且在瞬间需要ti.cloud和Q libary,但我仍然不认为在物理设备上花费10秒就需要这么多代码?这是在第一次加载时发生的还是在打开几次之后发生的 我注意到两件事:
试一试,看看它是否加快了速度,唯一需要检查的另一件事(尤其是对于较旧的设备)是在ti.xml中启用大型堆。这是在第一次加载时发生的还是在几次打开后发生的 我注意到两件事:
试一试,看看它是否加快了速度,唯一需要检查的另一件事(特别是对于较旧的设备)是在ti.xml中启用大型堆。有趣的是,这个问题只发生在开发中。我尝试将apk打包,并通过usb传输手动安装到手机上,windows立即打开,没有任何延迟,如前所述。(与之前花费10-15秒打开的代码和窗口相同)。 同时在Google Play上发布了该应用程序,t运行良好。
我的最佳猜测是,这与LiveView有关?:/无论哪种方式,问题都没有解决,但问题不再是问题:)有趣的是,问题只发生在开发中。我尝试将apk打包,并通过usb传输手动安装到手机上,windows立即打开,没有任何延迟,如前所述。(与之前花费10-15秒打开的代码和窗口相同)。 同时在Google Play上发布了该应用程序,t运行良好。
我最好的猜测是这与LiveView有关?:/无论哪种方式,问题都没有解决,但是问题没有问题没有问题了:)如果只打开没有代码的窗口>即注释掉js文件会发生什么?如果只打开没有代码的窗口>即注释掉js文件会发生什么?这只会在每个窗口的第一次加载时发生。连续的开口几乎都是瞬间加载的。跨越代码和组件的窗口加速了第一次加载,所以我猜我做错了什么。我得回去看看我到底在干什么guess@OutofOrbit“你弄明白了吗?”MathiasLykkegaardLorenzen不幸的是,我不记得我是否解决了它。但有一小部分记忆说,我在窗口“加载”中摆弄事件列表器。并在加载事件后启动了窗口中应该发生的所有事情。非常感谢您回来向我解释这一点!荣誉它只发生在每个窗口的第一次加载上。连续的开口几乎都是瞬间加载的。跨越代码和组件的窗口加速了第一次加载,所以我猜我做错了什么。我得回去看看我到底在干什么guess@OutofOrbit“你弄明白了吗?”MathiasLykkegaardLorenzen不幸的是,我不记得我是否解决了它。但有一小部分记忆说,我在窗口“加载”中摆弄事件列表器。并在加载事件后启动了窗口中应该发生的所有事情。非常感谢您回来向我解释这一点!荣誉
var args = $.args;
var arrowdb = require('arrowdb');
var Util = require('utilities');
function setUserInformation(){
$.imageView.image = Alloy.Globals.getOrganization() ? Alloy.Globals.getOrganization().image_url : '';
var user = Alloy.Globals.getUser();
$.nameLabel.text = user.firstName +' '+user.lastName;
$.emailLabel.text = user.email;
$.organizationLabel.text = Alloy.Globals.getOrganization() ? Alloy.Globals.getOrganization().name : '';
}
setUserInformation();
function showLogoutDialog() {
var dialog = Ti.UI.createAlertDialog({
cancel : 0,
buttonNames : [L('button_cancel'),L('button_logout')],
title : L('confirm')
});
dialog.addEventListener('click', function(e) {
if (e.index === 1) {
logoutUser();
}
});
dialog.show();
}
function logoutUser() {
arrowdb.logout().then(function(result){
if(result.success){
Alloy.Globals.removeUser();
Util().showLoginWindow();
}
}, function(error){
alert(error);
});
}
// ----------------------------------------------------------------------------------------------------------------------------
// --------------------------------------------- EVENT LISTENERS --------------------------------------------------------------
// ----------------------------------------------------------------------------------------------------------------------------
$.tableView.addEventListener('click', function(e){
switch(e.source.identifier){
case 'coach':
var chooseCoachController = Alloy.createController('chooseCoach').getView();
chooseCoachController.open();
break;
case 'logout':
showLogoutDialog();
break;
}
});