В службе я заселение в ArrayList, который я потом вернуться к вызывающему деятельности:ArrayList прибывает пустым в handleMessage Андроида() метод
В службе (здесь, resultArrayList содержит элементы класса ArrayList<MyObjs>
) :
public class DataFetchService extends BaseService {
@Override
protected void onHandleIntent(final Intent intent) {
super.onHandleIntent(intent);
// Do some work here that populates resultArrayList...
final Bundle bundle = new Bundle();
bundle.putSerializable(BaseService.RESULT_OBJ, resultArrayList);
message.setData(bundle);
try {
final Messenger messenger = startIntent.getParcelableExtra(BaseService.PARAM_MESSENGER);
messenger.send(message);
} catch (RemoteException e) {
L.p("Help!");
}
От BaseService:
public class BaseService extends IntentService {
protected ArrayList<MyObjs> resultArrayList = new ArrayList<>();
// Yada yada...
В handleMessage своей деятельности в():
@Override
public boolean handleMessage(final Message msg) {
final Bundle bundle = msg.getData();
@SuppressWarnings("unchecked")
final ArrayList<MyObjs> nodes = (ArrayList<MyObjs>) bundle.getSerializable(BaseService.RESULT_OBJ);
if (nodes == null) {
//App never enters this
return
}
if (nodes.size() == 0) {
// Always enters here!
// If I set a breakpoint here, the IDE tells me nodes size is 1
}
Странная вещь, что если я поставил точку останова внутри if (nodes.size == 0) {
кода, среда показывает, что nodes
действительно содержит элементы (говорит размер = 1, и я могу расширить ее и увидеть переменные), даже если он входит в это.
Любая идея в чем проблема? Это может быть условие гонки между другими службами, отправляющими данные обратно handleMessage()?
Когда вы пошагово с отладчиком, она по-прежнему введите 'if'? – shmosel
Покажите свою инициализацию resultArrayList – barq
очистите и перестройте свой проект. – samirk433