我正在为双屏android设备编写一个应用程序。
我有一个方法(在按下按钮时调用),它通知适配器(显示在一个屏幕上,即RightActivity上),然后向另一个屏幕(即LeftActivity)上显示的地图发出意图。方法如下:
public void onClick(View v) {
MyAction.fireIntentToMap(context, myList); // fire intent to map on the left screen
MyListAdapter.notifyDataSetChanged(); // adapter is for listview displayed on right screen
}我想要的是,意图应该首先触发到左侧屏幕上的映射活动,然后(即,显示意图中接收到的项目的地图)应该通知列表适配器,并且列表视图应该刷新自身。
然而,这种情况并没有发生。发生的情况是,调用进入fireIntenToMap方法并激发意图(即调用startActivity(intent); )。然而,在意图可以被映射接收之前,MyListAdapter.notifyDataSetChanged();行被执行,并且列表视图被刷新。意图稍后由映射接收。
这一切为什么要发生?如何在这里获取单线程行为(首先映射进程意图,然后刷新列表视图)?
。
发布于 2011-11-24 17:07:30
正如您所注意到的,您无法控制意图何时真正“交付”。
您的问题有几种解决方案,但在我看来,最好的解决方案是使用ordered broadcasts。因此,您的map和list注册(动态)以接收广播,并设置优先级,以便以所需的顺序调用它们。
当您注册通过'Context.registerReceiver(..)'接收广播时,将通过'intentFilter.setPriority(..)'设置优先级。
然后使用`Context.sendOrderedBroadcast(..)'触发广播。
https://stackoverflow.com/questions/8254250
复制相似问题