intent.getParcelableArrayListExtra на трансляции onReceive возвращает список с нулями android - PullRequest
0 голосов
/ 03 февраля 2019

У меня есть 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) {

    }
}

, так выглядит массивпри отладке в сервисе:

enter image description here

это код на главном интерфейсе для получения намерения:

   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();
    }
}

так выглядит массив при отладке в основном потоке:

enter image description here

Спасибо за помощь!

1 Ответ

0 голосов
/ 03 февраля 2019

Моя проблема была с функцией записи в объекте Parcelable.Я комментирую там две строки и забыл раскомментировать эти строки.после раскомментирования этих строк getArralylistExtra из намерения работает как ожидалось

...