Im Ausführen eines Alloy-Projekts auf einem physischen Gerät (Samsung Galaxy S4), ist das Öffnen von Windows unglaublich langsam auf dem ersten offenen Ereignis. Zum Beispiel kann das Öffnen eines Fensters bei einem Klick auf die Schaltfläche bis zu 10 Sekunden dauern, abhängig davon, wie viel "stuf" das Fenster enthält. Aber ich denke nicht, dass ich etwas Außergewöhnliches mache, siehe Beispielfenster unten. Nachdem das Fenster einmal geöffnet und dann geschlossen wurde, öffnet es sich beim zweiten Mal fast augenblicklich. Da war es irgendwie "in Erinnerung".Appcelerator langsames Öffnen von Windows auf Android
Beispiel Fenster:
<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>
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;
}
});
Das Fenster zwei weitere Dateien erfordern, die nur Hilfsmodule sind, wo hat Abhängigkeiten und erfordern im Moment "arrowdb", ti.cloud und Q libary, aber ich denke immer noch nicht, dass so viel Code auf einem physischen Gerät bis zu 10 Sekunden dauern kann?
Was passiert, wenn Sie einfach das Fenster ohne Code öffnen> zB Kommentar aus der js Datei? – Ray