我正在发布双语词典应用程序(https://play.google.com/store/apps/details?id=com.akkzrt.szotarhude012013a),这两种语言都有超过13万个词条。在程序启动时,我将数据从两个存储在assets文件夹中的utf-8文本文件预加载到两个ArrayAdapter中,然后我将第一个适配器设置为单个ListView。在ListView的顶部,我有一个按钮可以更改为另一个适配器(来回)。我测试了一些设备(三星galaxy mini,asus tf201,三星galaxy s 1和2,lg nexus 4,三星galaxy nexus),一切都很顺利。
然后有一位用户带着索尼爱立信Experia MK16i来找我。他抱怨说应用程序没有为他启动,只是加载了很长时间然后内存不足。在我的google play开发者管理页面中,我有两个java.lang.OutOfMemoryError崩溃:一个在dalvik.system.NativeStart.main中,另一个在android.graphics.BitmapFactory.nativeDecodeAsset中。
我该怎么办?我应该使用sql数据库和cursoradapter重写我的整个加载模块吗?我想避免这种情况。
非常感谢每一个帮助和想法。非常感谢你: 的István
答案 0 :(得分:0)
尝试对该数据使用分页
如0-200,201-300等
使用Custom 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
}
我假设您的数据来自数据库。