1

我正在使用适用于 android 的钛 appcelerator 来编写我的应用程序。

在我的主屏幕上,我有一个 tableView,里面充满了行列表,一次分页 15 个。因此,一旦您向下滚动到第 15 行,表格中就会添加另外 15 行。一个屏幕通常一次显示 3 到 10 行,具体取决于屏幕高度(samsung mini vs nexus 7)

每行包含一个视图,其中包含多个子视图和图像视图。当向上和向下滚动列表时,这会导致性能非常缓慢。为了解决这个问题,我将添加到行的父视图转换为图像,从而在滚动时大大提高了性能。

这是一个一般的片段

    //Turn the entire view "post_view" into an image. post_view consists of many child views    
    var blob = post_view.toImage(null, true);

    //Create the Image view of entire post_view, the parent of all child views
    var tempImage = Ti.UI.createImageView({
    height : 'auto',
    width : 'auto',
    top : 0,
    zindex : 3,
    image : blob
    });         


    /* adding the ImageView created from the parent view which all child ies have      been added to*/
   row.add(tempImage);

    /*This is the array of rows to be added to the tableView */
    tabData[i] = row;


    ........

    tableView.appendRow(tabData);

但是,尤其是在较大的屏幕上,当您滚动应用程序崩溃时,使用 DDMS 会显示为 OutOfMemory 错误。不幸的是,我现在无法发布特定错误,因为我现在无法访问更大的设备。当我不使用将整个视图更改为图像的方法时,也会发生内存错误,但在 DDMS 中给出的错误本身的细节较少。

所以我不确定它是否与 toImage 方法有关,或者我没有在 javascript 中正确释放内存,或者它是否是钛或 java 问题或什么。

任何人任何想法。这是我试图解决几周的问题。我希望我手头有特定的 java 错误。但他们大多指的是 OutOfMemory

4

0 回答 0