关闭钛的倍数 window

close multiple window in titanium

在当前显示的 window 中按下按钮时,我将打开一个新的 Window。当用户单击后退或 android 中的后退按钮时,我关闭当前 window 并且它工作正常。但是当用户按下应用程序的主页按钮转到第一个 window 时,所有其他添加的 window 将保留在后台,并且在 android 如果用户按下后退phone 应用程序的按钮转到上次打开的 window 而不是它应该去的地方。

这就是我打开新窗口的方式 window:

view.addEventListener('click', function(e) {
    var win = Ti.UI.createWindow({
        url : 'List.js'
    });
    win.open();
});

要关闭 window 我使用:

Ti.UI.currentWindow.close();

例如,我打开了 window A、B、C、D,在 D 中 window 我按下了必须转到 B 的应用程序的主页按钮 window.所以我需要关闭 C 和 D window 但我现在不知道如何关闭后台的 C window。

我没有使用 Alloy

我认为实现此目的的一种方法是跟踪打开的 windows。

例如,在 alloy.js 你可以有:

Alloy.Globals.openWindows = []

(如果您不使用 Alloy,只需使用其他一些全局变量)

现在您的事件处理程序将如下所示:

view.addEventListener('click', function(e) {
    var win = Ti.UI.createWindow({
        url : 'List.js'
    });
    Alloy.Globals.openWindows.append(win);
    win.open();
});

现在,如果您需要关闭 window 和父级 windows,您可以这样做:

Alloy.Globals.openWindows.pop().close()

您可以根据需要多次重复上述行以关闭所需数量的 windows。例如,如果您需要关闭 3 个父级 windows,您可以执行以下操作:

for (var i = 0: i < 3; i++) {
    Alloy.Globals.openWindows.pop().close()
}

如果你需要关闭所有 windows,除了第一个你可以这样做(假设第一个 window 没有添加到 openWindows):

while(Alloy.Globals.openWindows.length > 0) {
    Alloy.Globals.openWindows.pop().close()
}