Hyperloop на Android - утечка памяти
У меня есть классическое приложение Appcelerator Titanium (без Alloy) для Android, и я использую Hyperloop для использования сторонней библиотеки для обработки изображений. Проблема, с которой я столкнулся, заключается в том, что мое приложение пропускает объекты Activity каждый раз, когда я использую текущую активность Android из Titanium API, и преобразую ее в объект Hyperloop. Мне это нужно, поскольку сторонней библиотеке требуется объект Activity для конструктора объекта. Однако мне кажется, что есть более фундаментальная проблема либо с реализацией Hyperloop Android, либо с ее неправильным использованием.
Я собрал самое простое приложение, которое, кажется, воспроизводит проблему.
Содержимое app.js:
var Activity = require('android.app.Activity');
var mainWin = Ti.UI.createWindow({
title: 'Main window'
});
var button = Ti.UI.createButton({
title: 'Open new window'
});
button.addEventListener("click", function(e) {
var win = createSecondWindow();
win.open();
});
mainWin.add(button);
mainWin.open();
createSecondWindow = function() {
var secondWin = Ti.UI.createWindow({
title: 'Second window'
});
secondWin.addEventListener("open", function (e) {
var activity = new Activity(Ti.Android.currentActivity);
activity = null;
});
return secondWin;
};
Теперь, если я несколько раз открываю и закрываю второе окно, а затем выполняю дамп памяти (используя Android-профилировщик в Android-студии) после принудительного сбора мусора, я вижу несколько экземпляров org.appcelerator.titanium.TiActivity, которые сохраняются в памяти hyperloop.InstanceProxy объекты. Насколько я понимаю, они должны были быть удалены после сборки мусора.
Я использую последние версии TI SDK (7.1.1.GA) и hyperloop 3.0.5. Тестовое устройство работает под управлением Nexus 5 с Android 6.0.1.
Мой вопрос заключается в том, делаю ли я что-то не так с Hyperloop и Activity, или это, вероятно, проблема с самой Hyperloop.