我的应用程序开始消耗大量内存。第一个镜头是MNG动画缓存,但它接缝只是不共享。 所以我在构造函数/析构函数中创建了一个带调试打印的TestItem,当通过视频停止信号更改源代码时,我看到Loader没有工作属性:
import QtQuick 1.1
import QtMultimediaKit 1.1
Rectangle {
id:root
width: 800
height: 480
Video {
id: video1
anchors.fill: parent
source: "test.mp4"
onStopped: {
loader1.source= "Test2.qml";
}
}
Loader {
id:loader1
onSourceChanged: {
console.debug("source changed to "+source)
}
}
MouseArea {
anchors.fill: parent
onPressed: {
loader1.source= "Test1.qml";
video1.play();
}
}
}
所以当我点击4次时,我得到这样的控制台输出:
TestItem(0x1b4fc00)
source changed to file:///opt/Test/qml/TestLoaderBug/Test1.qml
TestItem(0x2047ba0)
source changed to file:///opt/Test/qml/TestLoaderBug/Test2.qml
TestItem(0x2046720)
source changed to file:///opt/Test/qml/TestLoaderBug/Test1.qml
~ TestItem(0x2047ba0)
TestItem(0x2050560)
source changed to file:///opt/Test/qml/TestLoaderBug/Test2.qml
TestItem(0x204fad0)
source changed to file:///opt/Test/qml/TestLoaderBug/Test1.qml
~ TestItem(0x2050560)
TestItem(0x2051e40)
source changed to file:///opt/Test/qml/TestLoaderBug/Test2.qml
TestItem(0x2051330)
source changed to file:///opt/Test/qml/TestLoaderBug/Test1.qml
~ TestItem(0x2051e40)
TestItem(0x2052e90)
source changed to file:///opt/Test/qml/TestLoaderBug/Test2.qml
当我关闭我的应用程序时,所有剩余的对象都将被删除:
~ TestItem(0x1b4fc00)
~ TestItem(0x2046720)
~ TestItem(0x204fad0)
~ TestItem(0x2051330)
~ TestItem(0x2052e90)
为什么onStopped信号可能产生这样的行为? 有没有解决这个问题?
使用libqt4-declarative(版本:4:4.8.1-0ubuntu4.2)和libdeclarative-multimedia(版本:1.2.0-1ubuntu2)在Ubuntu 12.04上测试。