У меня есть IntentService, который извлекает (во многих итерациях) подробности из сети (например, детали полета), затем создает из этих данных объекты (пригодные для разделения) и сохраняет объекты в ArrayList.когда больше нет данных для извлечения, служба останавливается.
в каждой итерации я отправляю Arraylist ( через BroadCast ) с данными до сих пор извлеченными в Activity (котораязапустить в главном потоке), чтобы представить до сих пор извлеченные данные.когда я готовлю ArrayList (в сервисе ) и заполняю его объектом полета, все хорошо (допустим, я заполнил его 17 FlightObjects), но в методе OnReceive широковещательная передача ( в основном потоке ), при попытке вывести массив из намерения происходит что-то, повреждающее массив, я получаю список массивов, размер которого 17 и первый объект действительно FlightOject, , но остальные объекты имеют значение null .
- это код Service для отправки Broadcast
private void sendMyBroacast(ArrayList<SkyScannerFlightObj> skyScannerFlights) {
try{
//sending back the arrayList to the main thread
Intent broadCastIntent=new Intent();
broadCastIntent.setAction(SearchFlights.BROADCAST_ACTION);
broadCastIntent.putParcelableArrayListExtra("flightsArr", skyScannerFlights);
sendBroadcast(broadCastIntent);
}
catch (Exception ex) {
}
}
, так выглядит массивпри отладке в сервисе:
это код на главном интерфейсе для получения намерения:
public void onReceive(Context context, Intent intent) {
try {
Bundle extras = intent.getExtras();
ArrayList<SkyScannerFlightObj> skyScannerFlights =extras.getParcelableArrayList("flightsArr");
searchFlightAct.displaySkyScannerFlights(skyScannerFlights);
}
catch (Exception ex) {
ex.printStackTrace();
}
}
так выглядит массив при отладке в основном потоке:
Спасибо за помощь!