0

我正在发布一个双语词典应用程序 ( https://play.google.com/store/apps/details?id=com.akkzrt.szotarhude012013a ),这两种语言都有超过 130 000 个词条。在程序启动时,我将存储在 assets 文件夹中的两个 utf-8 文本文件中的数据预加载到两个 ArrayAdapter 中,然后将第一个适配器设置为我的单个 ListView。在 ListView 的顶部,我有一个按钮可以切换到另一个适配器(来回)。我在一些设备(三星galaxy mini、华硕tf201、三星galaxy s 1和2、lg nexus 4、三星galaxy nexus)上进行了测试,一切正常。

然后一位用户带着他的 Sony Ericsson Experia MK16i 来找我。他抱怨应用程序没有为他启动,只是加载了很长时间然后内存不足。在我的 google play 开发人员管理页面上,我有两个 java.lang.OutOfMemoryError 崩溃:一个在 dalvik.system.NativeStart.main 中,一个在 android.graphics.BitmapFactory.nativeDecodeAsset 中。

我能做些什么呢?我应该使用 sql 数据库和 cursoradapter 重写我的整个加载模块吗?我想避免这种情况。

每一个帮助和想法都受到高度赞赏。非常感谢:伊斯特万

4

1 回答 1

0

尝试对该数据使用分页,

比如 0-200 , 201-300 等。

使用自定义 adepter 尝试一些以下逻辑。

int page= 100;
@Override
public View getView(int position, View convertView, ViewGroup parent) 
    {
      if (postion>page)
{    
//     Adjust your array which filling your custom adepter 
//     Load next 100 items from database and notify your adepter 
}
//do else 
} 

我假设您的数据来自数据库。

于 2013-06-17T18:02:32.230 回答