Hi Hendrik

My feeling is also that you have stumbled upon a bug.

Your update with the visible = false crossed mine.

My understanding was that all delegates are created when the ListView is created / Loaded. I see no reason at all why the ListView should go on a creation spree when it becomes INVISIBLE. That seems counter intuitive to me.

It has been suggested that you use dynamic loading, but I don't think that helps your problem. Just to be clear, I have used that technique successfully in two ways.

1) in my app Landed overall startup time was poor. One of the reasons was that all pages were being created on startup, and one was loading the phone's ContactModel. Given that the user may never actually get as far as the Page containing the ContactModel, I decided it would be better to dynamically load the ContactModel if and when that page becomes visible. So the app now starts fast, with the slight downside that if a user choses to access the phone's contacts, he needs to wait at at that point for the ContactModel to load.

2) Once the ContactModel was loaded (with several hundred contacts), scrolling in the ListView was terrible. The solution here was to make the delegate as lightweight as possible, and to dynamically load all the bits required when the delegate is clicked.

However from the behaviour you describe, none of that will help you. I need to do some thinking ...

bis bald

Chris

Zitat von "Hendrik Borghorst" <hendrikborgho...@gmail.com>:

Hello,

the problem isn't my delegate. It is quite minimal.

The problem is I think a bug in QML Listview. It goes absolutly crazy if
it is invisible and starts making delegate for around 50% of all items.
This causes the memory to run full.

A workaround I added is

model: visible ? modelVar : null

which works quite nicely. I think this bug could be an upstream qt bug?

greetings

Am Sonntag, den 15.12.2013, 10:01 +0100 schrieb
christopher.l...@thurweb.ch:
Hi Hendrik

Have you seen this? http://qt-project.org/wiki/Performance_tip_Lists

The general advice is to keep the delegates is lightweight as
possible, and to use Loaders for anything needed later (e.g. onClick)

Chris

Zitat von "Hendrik Borghorst" <hendrikborgho...@gmail.com>:

> Hello folks,
>
> I've got a problem with long lists (~25000 elements). All delegates are
> created at once which causes the memory usage to explode beyond the
> devices capability.
>
> I already tried setting "cacheBuffer: 0" in SiliciaListView but  it
> doesn't change it.
>
> Is the something I'm doing wrong.
>
> You can see the actual page code here:
>
> https://github.com/djselbeck/smpc/blob/master/pages/CurrentPlaylistPage.qml
>
> Shouldn't the delegates be constructed on demand? It is weird because my
> old n8 wasn't struggling with qml lists with this size.
>
> greetings and congrats on getting the devices to your customers (I'm
> very pleased)
>









_______________________________________________
SailfishOS.org Devel mailing list

Reply via email to