【发布时间】:2016-04-05 06:57:07
【问题描述】:
我正在尝试通过来自 Service 的广播来传递数组列表,意图是这样的
ArrayList objects = new ArrayList();
for (MasterVO vo : masterVOs) {
objects.add(vo.getMasterTables());
objects.add(vo.getDeviceUpdateStatus());
}
Bundle extra = new Bundle();
extra.putSerializable("objects", objects);
intent.putExtra("extra", extra);
sendBroadcast(intent);
然后在活动中获取它:
private void updateUI(Intent intent) {
Bundle extra = getIntent().getBundleExtra("extra");
ArrayList<Object> databaseList = (ArrayList<Object>) extra.getSerializable("objects");
fillMasterTable(databaseList);
}
广播的onReceive():
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
updateUI(intent);
}
};
我在extra 中收到null。我究竟做错了什么?我看到 `sendBroadcast' 部分中有值。
【问题讨论】:
-
你能用
Broadcast Receiver更新代码吗? -
总是尽量避免
BroadCastReciever中的繁重工作。从广播接收器启动服务并从那里更新 UI/活动的更好方法。
标签: java android android-intent arraylist