-1
일부 데이터베이스 작업 수행을 위해 AsyncTask
이 있습니다. 문제는 UI 스레드가 차단되고 ThreadPoolExecutor
에 AsyncTask
을 실행할 때입니다. 여기에 내 코드가있다 :Android AsyncTask는 UI 스레드를 차단합니다.
private class AddToQueue extends AsyncTask<String, Void, String> {
int qLength = 0;
protected String doInBackground(String... params) {
if (db == null) return null;
db.delete(DBHelper.QUEUETABLE, null, null);
ContentValues cv = new ContentValues();
for (int i = 0; i < qLength; i++) {
cv.put(DBHelper.INDEX, i);
cv.put(DBHelper.PATH, items.get(i).getPath());
cv.put(DBHelper.TITLE, items.get(i).getTitle());
try {
db.insert(DBHelper.QUEUETABLE, null, cv);
} catch (Exception e) {
e.printStackTrace();
}
cv.clear();
}
return "Executed";
}
@Override
protected void onPostExecute(String result) { }
@Override
protected void onPreExecute() {
qLength = list.getAdapter().getCount();
}
@Override
protected void onProgressUpdate(Void... values) { }
와
를 대체? 또한'qLength'로 무엇을하는지는 스레드로부터 안전하지 않습니다. –
그냥 doInBackground를 수동으로 호출하지 않기를 바랍니다. – peter
차단되는 것을 어떻게 알 수 있습니까? 일반 수영장에서 실행할 수 있습니까? – Eenvincible