私のアプリでは、Webから大量のデータをロードしていて、sqliteテーブルにデータを挿入すると、sqliteテーブルにデータを格納するときにApp AppのUIが遅くなり、ANRダイアログが表示されます。 ウェブからの負荷データのための私のコードとは、アプリのISN」スロー取得このコード私のアプリのUIを実行するとsqliteのテーブルバルクデータをsqliteに挿入すると、UIが遅くなる
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);
}
にsqliteのテーブルに挿入するデータのための
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);
この私のコードを挿入し、ダイアログを表示します応答しません。 終了しますか? 誰でも、私のUIがぶら下がることなく、バルクデータをsqliteテーブルに挿入することを提案することができます。
あなたは私のコードでAsyncTaskやサービスを追加してくださいすることができ、それを使用する方法 –