В моем приложении я беру событие, опубликованное в уведомлении, и фильтрую уведомление, затем сохраняю его в общем предпочтении из объектной модели и использую для него хэш-карту:
Map<String, List<Model>>
Я использую asynctask для получения списка обратно в приложении из общих настроек:
private class FetchData extends AsyncTask<Void,Void,Map<String,List<Model>>> {
@Override
protected Map<String, List<Model>> doInBackground(Void... voids) {
SharedPreferences shared;
Gson gson = new Gson();
shared = getSharedPreferences("MyVariables", Context.MODE_PRIVATE);
modelList = gson.fromJson(
shared.getString("My_map", null),
new TypeToken<HashMap<String, List<Model>>>() {
}.getType());
return modelList;
}
@Override
protected void onPostExecute(Map<String, List<Model>> stringListMap) {
super.onPostExecute(stringListMap);
if(modelList!=null) {
keys = getKeys(modelList);
adapter = new CustomListAdapter(getApplicationContext(), keys);
list.setAdapter(adapter);
}
}
}
Сохранение данных в этой функции:
private void saveMap(Map<String,List<Model>> inputMap){
SharedPreferences shared;
SharedPreferences.Editor editor;
shared = getSharedPreferences("MyVariables", Context.MODE_PRIVATE);
editor = shared.edit();
Gson gson = new Gson();
String json = gson.toJson(inputMap);
editor.putString("My_map", json);
editor.commit();
}
Каждый раз, когда публикуется новое уведомление, я извлекаю из него данные и сохраняю их в локальной хэш-карте, а также в общий доступ. и во время открытия приложения я загружаю данные из общего предпочтения в локальный список.
Что я не могу понять, так это причина появления anr в моем приложении, когда публикуется новое уведомление.
It has been 8006.8ms since event, 8006.4ms since wait started. Reason: Waiting to send non-key event because the touched window has not finished processing certain input events that were delivered to it over 500.0ms ago. Wait queue length: 2. Wait queue head age: 9112.1ms.
Reason: Waiting to send non-key event because the touched window has not finished processing certain input events that were delivered to it over 500.0ms ago. Wait queue length: 2. Wait queue head age: 9112.1ms.