在我的应用程序我从Web加载批量数据,它插入到sqlite表,当我存储数据到sqlite表我的应用程序用户界面变得缓慢,并显示ANR对话框, 下面是我从网络加载数据的代码,并插入到SQLite表当批量数据插入sqlite得到缓慢我的UI
StringRequest request = new StringRequest(url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONArray array = new JSONArray(response);
if (array.length() != 0) {
for (int i = 0; i < array.length(); i++) {
JSONObject object = array.getJSONObject(i);
AirportModel model = new AirportModel();
String cityName = object.getString("airport_city_name");
String cityCode = object.getString("airport_city_code");
String country = object.getString("airport_country_name");
String name = object.getString("airport_name");
dbHelper.insertAiports(cityName, cityCode, name, country);
}
}
Toast.makeText(getApplicationContext(), String.valueOf(array.length()), Toast.LENGTH_SHORT).show();
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(), "Founded JSON Exception", Toast.LENGTH_SHORT).show();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(FlightSearchActivity.this, error.getMessage(), Toast.LENGTH_SHORT).show();
}
});
RequestQueue queue = Volley.newRequestQueue(FlightSearchActivity.this);
queue.add(request);
用于插入数据的这种我的代码SQLite表
public void insertAiports(String airportCityName, String aiportCityCode, String airportName, String airportConutryName) {
SQLiteDatabase database = getWritableDatabase();
ContentValues values = new ContentValues();
values.put(AIRPORT_FIELD_CITY_NAME, airportCityName);
values.put(AIRPORT_FIELD_CITY_CODE, aiportCityCode);
values.put(AIRPORT_FIELD_NAME, airportName);
values.put(AIRPORT_FIELD_COUNTRY_NAME, airportConutryName);
database.insert(TABLE_AIRPORTS, null, values);
}
运行这段代码我的应用程序的用户界面越来越慢时,并显示对话框中的“应用程序ISN '没有回应 你想要亲近吗?“ 任何人都可以建议将批量数据插入sqlite表而不挂我的UI。
如何使用它,你可以请加的AsyncTask或服务在我的代码 –