0
我有非常大的表300,00條記錄 我從XML文件中的SQLite加載,安卓:加載數據從XML到SQLite的花費很長的時間
不幸的是,這是採取非常非常長的時間(用了15分鐘,然後我不得不阻止它)。
這是正常的嗎?
我的代碼有什麼問題。
如何加快速度?
感謝
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_filter);
new Thread(new Runnable() {
public void run() {
FillLocations();
}
}).start();
}
private void FillLocations()
{
OpenDB();
Resources res = getResources();
ContentValues _Values = new ContentValues();
//Open xml file
XmlResourceParser _xml = res.getXml(R.xml.locations);
try
{
//Check for end of document
int eventType = _xml.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
//Search for record tags
if ((eventType == XmlPullParser.START_TAG) &&(_xml.getName().equals("Cities"))){
//Record tag found, now get values and insert record
String City = _xml.getAttributeValue(null, "City");
String Country = _xml.getAttributeValue(null, "Country");
String Time = _xml.getAttributeValue(null, "Time");
_Values.put("City", City);
_Values.put("Country", Country);
_Values.put("Time", Time);
db.insert("Locations", null, _Values);
}
eventType = _xml.next();
}
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
你有沒有基準測試你的代碼,看看它花了多少時間?另外,爲什麼不預先填充sqllite並將其作爲binarly blob分發? –
如何預填充sqllite並將其作爲binarly blob分發? – asmgx
@asmgx你可以試試這個https://github.com/jgilfelt/android-sqlite-asset-helper或者你可以手動複製文件 – LordRaydenMK