我有一个应用程序,我正在尝试在其中设置一个相当大的 SQLite 数据库(一个大约有 5000 行的表)。我已经构建了数据库类和所有内容,当我在较小规模(400 行)上进行测试时,我的应用程序可以工作,但是现在当我想导入我的数据库时,我得到了我似乎找不到的内存不足错误一种解决方法。
该数据库最初位于我的 Web 服务器上的 MySQL 上,由于某种奇怪的原因我无法转换它,但我设法生成了一个带有查询的文本文件,以添加所有 5000 行,大小为 11.5mb。我的资产文件夹中有这个文件,我正在尝试将它放入我的数据库中:
public void onHandleIntent(Intent intent) {
DBAdapter db = new DBAdapter(getApplicationContext());
db.open();
try {
InputStream is = getAssets().open("verbs_sql.txt");
db.executeSQL(convertStreamToString(is));
} catch (IOException e) {}
db.close();
// Run main activity
Intent i = new Intent(DatabaseReceiver.this, BaseActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
DatabaseReceiver.this.startActivity(i);
}
public static String convertStreamToString(InputStream is) throws IOException {
Writer writer = new StringWriter();
char[] buffer = new char[2048];
try {
Reader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
int n;
while ((n = reader.read(buffer)) != -1) {
writer.write(buffer, 0, n);
}
} finally {
is.close();
}
String text = writer.toString();
return text;
}
}
StringWriter() 发生内存不足错误,因此看起来像是将那个大文件放到内存中。我该如何解决这个问题?我也尝试过遍历所有 5000 行,但大约 30 秒后,我再次出现内存不足。