我正在解析一个包含近20000个标签的巨大的xml,我正在解析它们时将xml中的所有条目保存到我的sqlite数据库中.
但显然xml在没有插入操作的情况下很快被解析,但是当我尝试插入每个值时需要很长时间.(大约10分钟).
数据库插入代码:
for (int i = 0; i < tracksList.size(); i++) {
dataSource.addTracks(tracksList.get(i));
}
public long addTracks(Tracks tracks) {
long insertId = 0;
ContentValues values = new ContentValues();
values.put(TRACKS_ID, tracks.getStrId());
values.put(TRACKS_ARTISTID, tracks.getStrArtistId());
values.put(TRACKS_ARTISTNAME, tracks.getStrArtistName());
values.put(TRACKS_ALBUMNAME, tracks.getStrAlbumName());
values.put(TRACKS_FILENAME, tracks.getStrFileName());
values.put(TRACKS_TRACKNAME, tracks.getStrTrackName());
insertId = database.insert(TRACKS_TABLE, null, values);
return insertId;
}
Run Code Online (Sandbox Code Playgroud)
有没有其他选择从我的arraylist中获取每个元素并以更快的速度保存它们.
编辑:让它工作,thnx所有..
database.beginTransaction();
try {
//standard SQL insert statement, that can be reused
SQLiteStatement insert =
database.compileStatement("insert into " + TRACKS_TABLE
+ "(" + TRACKS_ID + "," + TRACKS_ARTISTID
+ "," …Run Code Online (Sandbox Code Playgroud) 我在我的服务上收到错误/异常,我用它来传输shoutcast.如果生成任何异常,我想在ui线程上显示错误,例如音乐流不起作用.
怎么做,这是我目前的代码.
UI类:
private OnClickListener btnStopListener = new OnClickListener() {
public void onClick(View v) {
if (MyService.isRunning()) {
doUnbindService();
stopService(new Intent(MainActivity.this, MyService.class));
btnStop.setBackgroundResource(R.drawable.player_play);
barLoader.setVisibility(View.GONE);
} else {
Intent intent = new Intent(MainActivity.this, MyService.class);
intent.putExtra("streamUrl", strLinkUrl);
startService(intent);
doBindService();
}
}
};
void doBindService() {
bindService(new Intent(this, MyService.class), mConnection,
Context.BIND_AUTO_CREATE);
mIsBound = true;
}
void doUnbindService() {
if (mIsBound) {
// If we have received the service, and hence registered with it,
// then now is the time to unregister.
if (mService …Run Code Online (Sandbox Code Playgroud)